XmlBeans can Deadlock Threads
-----------------------------
Key: XMLBEANS-388
URL: https://issues.apache.org/jira/browse/XMLBEANS-388
Project: XMLBeans
Issue Type: Bug
Components: XmlObject
Affects Versions: Version 2.3, Version 2.3.1, Version 2.4
Environment: Windows XP, Java 1.6
Reporter: Paul Hepworth
The situation can occur when calling a setter on an XmlObject which
synchronizes on Locale A, to set an XmlObject which synchronizes on Locale B at
the same time as calling a setter on an XmlObject which synchronizes on Locale
B to set an XmlObject which synchronizes on Locale A.
The code within XmlObjectBase is fine, but the problem lies in the generated
code compiled from a schema.
The code that is generated contains a synchronized block on the monitor (Locale
A or B depending on the object), and then delegates to the XmlObjectBase set
method, which detects that you need to lock more than 1 Locale and so acquires
a GlobalLock and then synchronizes on both monitors.
As another thread can be doing the reverse, you can end up with 2 threads, one
with Locale A locked, and one with Locale B locked. The first one then acquires
a GlobalLock, but can never obtain a lock on the other Locale.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]