Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 467528

Summary: IllegalArgumentException in GC.drawImage, when being called from Thumbnail$ThumbnailUpdater.run()
Product: [Tools] GEF Reporter: EPP Error Reports <error-reports-inbox>
Component: GEF-Legacy Draw2dAssignee: gef-inbox <gef-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: laurent.redor, nyssen, pierre-charles.david
Version: 3.10.0   
Target Milestone: 3.10.1 (Mars SR1) M1   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
Possible solution, caching the source file, on which the tile size computation was based none

Description EPP Error Reports CLA 2015-05-18 14:10:19 EDT
The following incident was reported via the automated error reporting:


    code:                   0
    plugin:                 org.eclipse.ui_3.107.0.v20150107-0903
    message:                Unhandled event loop exception
    fingerprint:            91204112
    exception class:        org.eclipse.swt.SWTException
    exception message:      Failed to execute runnable (java.lang.IllegalArgumentException: Argument not valid)
    number of children:     0
    
    org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalArgumentException: Argument not valid)
    at org.eclipse.swt.SWT.error(SWT.java:4477)
    at org.eclipse.swt.SWT.error(SWT.java:4392)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:139)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3793)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3431)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:648)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:592)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
caused by: java.lang.IllegalArgumentException: Argument not valid
    at org.eclipse.swt.SWT.error(SWT.java:4458)
    at org.eclipse.swt.SWT.error(SWT.java:4392)
    at org.eclipse.swt.SWT.error(SWT.java:4363)
    at org.eclipse.swt.graphics.GC.drawImage(GC.java:870)
    at org.eclipse.draw2d.parts.Thumbnail$ThumbnailUpdater.run(Thumbnail.java:185)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3793)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3431)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:648)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:592)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
   
  

General Information:

    reported-by:      
    anonymous-id:     958ddf0e-fa29-4bf7-9284-09999a720f56
    eclipse-build-id: 4.5.0.I20150203-1300
    eclipse-product:  org.eclipse.epp.package.jee.product
    operating system: Linux 3.13.0 (x86_64) - gtk
    jre-version:      1.7.0_75-b13

The following plug-ins were present on the execution stack (*):
    1. org.eclipse.core.databinding.observable_1.4.1.v20140910-2107
    2. org.eclipse.core.databinding_1.4.100.v20141002-1314
    3. org.eclipse.core.runtime_3.10.0.v20150112-1422
    4. org.eclipse.draw2d_3.10.0.201502020307
    5. org.eclipse.e4.ui.workbench_1.3.0.v20150113-2327
    6. org.eclipse.e4.ui.workbench.swt_0.12.100.v20150114-0905
    7. org.eclipse.equinox.app_1.3.200.v20130910-1609
    8. org.eclipse.equinox.launcher_1.3.0.v20140415-2008
    9. org.eclipse.swt_3.104.0.v20150203-2243
    10. org.eclipse.ui_3.107.0.v20150107-0903
    11. org.eclipse.ui.ide.application_1.0.600.v20150120-1542
    12. org.eclipse.ui.ide_3.10.100.v20150126-1117

Please note that:
* Messages, stacktraces, and nested status objects may be shortened.
* Bug fields like status, resolution, and whiteboard are sent
  back to reporters.
* The list of present bundles and their respective versions was
  calculated by package naming heuristics. This may or may not reflect reality.

Other Resources:
* Report: https://dev.eclipse.org/recommenders/committers/confess/#/problems/54e6f10ce4b045c0d92bb496  
* Manual: https://dev.eclipse.org/recommenders/community/confess/#/guide


Thank you for your assistance.
Your friendly error-reports-inbox.
Comment 1 Alexander Nyßen CLA 2015-05-18 14:15:46 EDT
This seems to have been introduced by the changes needed to fix bug #309912 (see comment #10 and following). It might also be an already existing problem that was simply unveiled by the applied changes. We need to investigate this in more detail.
Comment 2 Alexander Nyßen CLA 2015-05-18 15:29:53 EDT
It seems the reason for this is that the sx2 and sy2 values computed in lines 157 and 162 access the current source figure size, which may have changed with respect to the tile sizes computed earlier.
Comment 3 Alexander Nyßen CLA 2015-05-18 15:31:52 EDT
Created attachment 253541 [details]
Possible solution, caching the source file, on which the tile size computation was based

Potential fix for the problem.
Comment 4 Laurent Redor CLA 2015-05-19 06:13:02 EDT
I confirm that the patch fix our problems detected in Sirius automatic tests suite (bug 309912 comment 10 and following).
Comment 5 Laurent Redor CLA 2015-05-19 09:03:19 EDT
This fix will be in RC1? RC2 ? ...?
Comment 6 Alexander Nyßen CLA 2015-05-19 09:21:02 EDT
I think the risk of putting it into RC2 is too high. I thus see two options:

a) ship the fix for bug #309912 as is (i.e. the outline now renders correctly but the IllegalArgumentException might occur in the background) and release this patch in Mars SR1

b) revert the changes applied in terms of bug #309912 for Mars and re-apply them (including this patch) for Mars SR1 or Neon (I am not sure, if API had too be changed, so I would have to check that first)

What would you prefer?
Comment 7 Laurent Redor CLA 2015-05-19 09:29:53 EDT
I prefer option a. We are sure to have this patch in SR1 (no API change).

For information, it is not blocking for us (Sirius project) as we have close the outline for problematic tests.
Comment 8 Alexander Nyßen CLA 2015-05-19 12:44:09 EDT
(In reply to Laurent Redor from comment #7)
> I prefer option a. We are sure to have this patch in SR1 (no API change).
> 
> For information, it is not blocking for us (Sirius project) as we have close
> the outline for problematic tests.

Ok, my assessment is the same. We will investigate this for Mars SR1 then.
Comment 9 Alexander Nyßen CLA 2015-07-06 14:52:34 EDT
Pushed the proposed changes to origin/R3_10_maintenance and origin/master (merged into master). Resolving as fixed in 3.10.1 M1.