
|
If you were logged in you would be able to see more operations.
|
|
|
uPortal
Created: 28/Apr/05 02:18 PM
Updated: 03/Jul/07 04:11 PM
|
|
| Component/s: |
Rendering architecture
|
| Affects Version/s: |
2.0.3,
2.0,
2.1.1,
2.1.2,
2.1.4,
2.0.1,
2.0.2,
2.1.3,
2.1,
2.1.5,
2.2,
2.2.1,
2.3,
2.3.1,
2.3.2,
2.3.3,
2.3.4,
2.3.5,
2.4,
2.4.1,
2.4.2
|
| Fix Version/s: |
2.4.3
|
|
|
Original Estimate:
|
Unknown
|
Remaining Estimate:
|
Unknown
|
Time Spent:
|
Unknown
|
|
File Attachments:
|
1.
backport-util-concurrent-patch.txt (289 kb)
|
|
Issue Links:
|
Generic Relation
|
|
This issue relates to:
|
|
UP-931
ChannelRenderer finalizer is causing ...
|
|
|
|
|
This issue relates to:
|
|
UP-862
BoundedThreadPool infinite loop or de...
|
|
|
|
UP-1102
Restore safety to channel rendering
|
|
|
|
|
|
|
No one calls destroyThread() or stopWorker(). If someone were to call these methods, we'd either get deadlock or infinite recursion.
In looking through the Worker class in search of performance issues, Faizan and I noticed Worker.that stopWorker currently calls ThreadPool.destroyThread(this).
Currently the portal is using BoundedThreadPool and its destroyThread(Worker worker) implementation calls worker.stopWorker() which in turn calls destroyThread(this).
On top of that destroyThread is synchronized. There appears to be an opporunity here for either deadlock or StackOverflows (or whatever is thrown with those types of infinite loops) or both! Currently, stopWorker and destroyThread appear to call each other so this code is never actually executed. However, if executed accidentally it could have some adverse affects.
|
|
Description
|
No one calls destroyThread() or stopWorker(). If someone were to call these methods, we'd either get deadlock or infinite recursion.
In looking through the Worker class in search of performance issues, Faizan and I noticed Worker.that stopWorker currently calls ThreadPool.destroyThread(this).
Currently the portal is using BoundedThreadPool and its destroyThread(Worker worker) implementation calls worker.stopWorker() which in turn calls destroyThread(this).
On top of that destroyThread is synchronized. There appears to be an opporunity here for either deadlock or StackOverflows (or whatever is thrown with those types of infinite loops) or both! Currently, stopWorker and destroyThread appear to call each other so this code is never actually executed. However, if executed accidentally it could have some adverse affects. |
Show » |
|