Bug 237657 - Possible endless loop in WeakListenersImpl.ProxyListener<init>()
Possible endless loop in WeakListenersImpl.ProxyListener<init>()
Status: RESOLVED FIXED
Product: platform
Classification: Unclassified
Component: -- Other --
7.4
All All
: P2 (vote)
: 8.0
Assigned To: Jaroslav Tulach
issues@platform
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-10-25 11:08 UTC by mklaehn
Modified: 2013-11-24 02:19 UTC (History)
0 users

See Also:
Issue Type: DEFECT
:


Attachments
proposed patch (1009 bytes, application/octet-stream)
2013-10-25 11:08 UTC, mklaehn
Details

Note You need to log in before you can comment on or make changes to this bug.
Description mklaehn 2013-10-25 11:08:52 UTC
Created attachment 141552 [details]
proposed patch

In the constructor of WeakListenersImpl.ProxyListener there is an unsynchronized access to a static WeakHashMap. WeakHashMap itself is not threadsafe and must be wrapped in a synchronized container to prevent data structure corruption. The corruption has the effect of a tight loop and thus blocks the Thread. Not a deadlock but bad nonetheless.
Multi-threaded calls to

public static <T extends EventListener> T create(Class<T> lType, Class<? super T> apiType, T l, Object source)

can lead to said corruption and block the caller Thread. The attached patch wraps the WeakHashMap in a synchronized Map and thus fixes this defect.
Comment 1 Jaroslav Tulach 2013-11-20 09:11:09 UTC
ergonomics#e50988801ab5
Comment 2 Quality Engineering 2013-11-24 02:19:28 UTC
Integrated into 'main-silver', will be available in build *201311240002* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/e50988801ab5
User: Martin Klaehn <mklaehn@netbeans.org>
Log: #237657: Synchronizing access to constructors map. Reviewed by jtulach@netbeans.org, thanks for the patch.


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo