Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Component/s: Core/Parsing
-
Labels:None
-
Environment:Load a document page that takes a long time to initialize. Close the document immediately after opening. The viewer RI will appear to hang until the page(s) are done loading. Capture a stack trace to see the lock issue.
Description
A client has reported a thread lock issue when trying to close a document that contains pages that take a long time to initialize. See attached stack trace. The report is valid.
When a page is loaded the page initializer thread gets a lock on the Page object. When the awt-event thread gets the command to dispose the document it can't call page.removePaintPagelistener because of the page initializer lock. Moving the add/removePaintPageListeners synchronization to the vector object gets around this issue.
When a page is loaded the page initializer thread gets a lock on the Page object. When the awt-event thread gets the command to dispose the document it can't call page.removePaintPagelistener because of the page initializer lock. Moving the add/removePaintPageListeners synchronization to the vector object gets around this issue.
Managed to reproduce the error and test the fix, all seem to be good.