<AWT Dev> numAppContexts in AppContext modified in not-thread-safe way.
David.Holmes at oracle.com
Thu Aug 18 17:44:39 PDT 2011
On 19/08/2011 10:34 AM, Clemens Eisserer wrote:
> Hi David,
> Part of the missing picture here is how AppContexts get created and
> dispose()'d as it may be that the way AppContext is used you can't
> actually get concurrent modification of numAppContexts. But there's no
> way to discern that from the AppContext code so it would be safer to use
> the AtomicInteger.
> I had a look how AppContexts are created, and at least the IcedTea plugin
> calls SunToolkit.createNewAppContext() in a fresh thread without any
> synchronization (as does caciocavallo-web).
> I don't this with all the code the non-atomicity of operations on
> numAppContexts is a real-world problem, but on the other hand - it wouldn't
> hurt to have this replaced with correct code ;)
Though it is also interesting to note that the only use of numAppContexts is
for the shortcut lookup of the main app context when numAppContexts==1. It's
not clear to me why this case needs to be handled specially. I also can't
tell what code would be calling getAppContext under those conditions.
Anyway, use of AtomicInteger is correct and should be "harmless".
More information about the awt-dev