Anonymous | Login | Signup for a new account | 12-17-2024 10:35 PST |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
0002248 | [Resin] | minor | N/A | 12-12-07 15:18 | 12-17-07 14:51 | ||||
Reporter | aozarov | View Status | public | ||||||
Assigned To | ferg | ||||||||
Priority | normal | Resolution | fixed | ||||||
Status | closed | Product Version | 2.1.x | ||||||
Summary | 0002248: access to SessionManager#timeout is not synchronized | ||||||||
Description |
Both Crod and Alarm threads can call this method simultaneously. The call to sessionList.clear() is outside of the synchronized block which can cause one thread to clear the list while the other one is processing it. I didn't check all the side-effects of this problem but can imagine that some sessions will not be cleaned/removed appropriately which may lead to some memory leaks. Also, I am not sure if that can leave the ArrayList itself in an inconsistent state. |
||||||||
Additional Information |
thread dump extract: "resin-alarm" daemon prio=10 tid=0x00002aab502d2c00 nid=0x5180 waiting for monitor entry [0x000000004123a000..0x000000004123aba0] java.lang.Thread.State: BLOCKED (on object monitor) at com.caucho.http.session.SessionManager.timeout(SessionManager.java:1009) - waiting to lock <0x00002aaab683fbd0> (a com.caucho.util.LruCache) at com.caucho.server.http.Application.timeout(Application.java:3667) at com.caucho.server.http.VirtualHost.timeout(VirtualHost.java:1323) at com.caucho.server.http.ServletServer.timeout(ServletServer.java:1808) at com.caucho.server.http.ServletServer.handleAlarm(ServletServer.java:1758) at com.caucho.util.Alarm$AlarmThread.evaluateAlarm(Alarm.java:319) at com.caucho.util.Alarm$AlarmThread.run(Alarm.java:279) "resin-cron" daemon prio=10 tid=0x00002aab4ec00000 nid=0x517f runnable [0x0000000041139000..0x0000000041139c20] java.lang.Thread.State: RUNNABLE at com.caucho.http.session.SessionManager.timeout(SessionManager.java:1017) - locked <0x00002aaab683fbd0> (a com.caucho.util.LruCache) at com.caucho.http.session.SessionManager.cron(SessionManager.java:1040) at com.caucho.server.http.Application.cron(Application.java:3701) at com.caucho.server.http.VirtualHost.cron(VirtualHost.java:1370) at com.caucho.server.http.ServletServer.cron(ServletServer.java:1950) at com.caucho.server.http.ServletServer.handleCron(ServletServer.java:1780) at com.caucho.util.Cron$CronThread.evaluateCron(Cron.java:199) at com.caucho.util.Cron$CronThread.run(Cron.java:163) |
||||||||
Attached Files | |||||||||
|
Notes | |
(0002584) ferg 12-17-07 14:51 |
2.1.x is frozen and this issue does not apply to 3.0, since it uses a single alarm thread, i.e. that list is only single-threaded. |
Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
29 total queries executed. 26 unique queries executed. |