App freeze during abbot swt drag and drop

  • Luchesar Cekov
    Luchesar Cekov


    I recently found abbot and  abbot.swt and I find them extremely useful for writing unit tests for visual applications. I am using abbot.swt to test my eclipse RCP application.

    When Drag and drop is performed the application will eventual stuck on method:
    tester.dragDrop(centerButton.x, centerButton.y, centerCanvas.x, centerCanvas.y,
    The entire application screen freezes just before the drag operation is started. If drag operation start it may block entire screen and force me to restart the XServer session. Sometimes the drag and drop operation is performed properly but these are rare occasions.

    I also tried
    tester.actionDragDrop(centerButton.x, centerButton.y, centerCanvas.x, centerCanvas.y,
    But there is no difference. The application still freezes most of the times on the drag and drop operation.

    Is there anything I am doing wrong or this is bug in abbot or eclipse?
    Below is part of the java thread dump related to the problem method where JVM is freeze:

    "abbot.swt.user" daemon prio=10 tid=0x00002aaaf8863c00 nid=0x6a45 in Object.wait() [0x0000000043042000..0x0000000043043d80]
       java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00002aaab49238d8> (a org.eclipse.swt.internal.Lock)
        at java.lang.Object.wait(
        at org.eclipse.swt.internal.Lock.lock(
        - locked <0x00002aaab49238d8> (a org.eclipse.swt.internal.Lock)
        at org.eclipse.swt.internal.gtk.OS.GDK_DISPLAY(
        - locked <0x00002aaaaf694498> (a java.lang.Class for
        at abbot.swt.Robot.postMouseMove(
        at abbot.swt.Robot.mouseMovePrim(
        at abbot.swt.Robot.mouseDragDrop(
        - locked <0x00002aaaee65c808> (a abbot.swt.Robot)
        at abbot.swt.tester.AbstractTester.dragDrop(
        at com.ontologypartners.modeller.test.EditorWidgetTest.testDNDFromThePallet(
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
        at java.lang.reflect.Method.invoke(
        at junit.framework.TestCase.runTest(
        at junit.framework.TestCase.runBare(
        at abbot.swt.junit.extensions.SWTTestCase.runBareWrapper(
        at abbot.swt.junit.extensions.SWTTestCase.access$2(
        at abbot.swt.junit.extensions.SWTTestCase$4.execute(

    I can send you the entire stack trace if it is needed.

    Thanks in advance,
    Best regards,