[rfc][icedtea-web] Fix for PR1157: Applets can hang browser after fatal exception

Adam Domurad adomurad at redhat.com
Wed Feb 27 12:17:21 PST 2013


On 01/28/2013 06:40 AM, Jiri Vanek wrote:
> On 01/25/2013 04:56 PM, Adam Domurad wrote:
>> This one was took quite some effort to track down. Essentially 
>> because Firefox does not hold our plugin out-of-process we can 
>> potentially hang the browser if we are not careful.
>>
>> The issue is explained in comment in patch file PR1157.patch. 
>> Basically there was a long timeout in 
>> PluginAppletViewer.waitForAppletInit. It was supposed to 'wake up' 
>> when an applet dispatched an event signifying it completed loading, 
>> but it was not happening in the case of a fatal exception.
>>
>> No automated reproducer yet, but I believe this patch is simple 
>> enough that it can go in before one.
>>
>> I have added a 'reproducing catalyst' -- pseudo-reproducer.patch. 
>> This is NOT a patch intended to go into ITW HEAD. With this patch the 
>> worker pool consists of one thread effectively, so the hanging 
>> manifests itself very easily. Confirming the patch works with this 
>> goes as follow:
>> 1. Apply pseudo-reproducer.patch to HEAD
>> 2. Run 
>> http://jogamp.org/deployment/jogamp-current/jogl-applet-runner-newt-gears-normal-napplet.html 
>> and refresh. Firefox should hang, or at least display bizarre behaviour.
>> --- this is nothing special - just a failing (ATM) applet
>> 3. Apply PR1157.patch on top
>> 4. Run the same page and refresh, Firefox should work fine.
>>
>> ChangeLog for PR1157.patch:
>> 2013-XX-XX Adam Domurad <adomurad at redhat.com>
>>
>> Fix PR1157: Applets can hang browser after fatal exception
>> * NEWS: Add entry for PR1157
>> * netx/net/sourceforge/jnlp/NetxPanel.java
>> (runLoader): Move dispatchAppletEvent into a 'finally' block.
>
> Although I have still some troubles on my old HW with f14, jdk6, it 
> behaves much better and I'm for this one asap:)
> It would be nice to try deepak and his sometimes freezing machine to try.
>
> As you told, no special reproducer needed, this is tested by all 
> reprodcuers which throws lunchError.  The only lines to be added is 
> some tests that FF have not deadlocked after this. I have this on 
> todo, and I  will add later.
>
> Ok. for head.
>
> J.

I would like this to be considered for backporting to 1.2 & 1.3. There 
is considerable benefit for stability, and if we push the unsigned 
applet confirmation it will rely on launcherrors.

Happy hacking,
-Adam



More information about the distro-pkg-dev mailing list