-
Notifications
You must be signed in to change notification settings - Fork 738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JITServerSharedROMClassCache double-initialization after purging all client session data triggers assert #18631
Comments
Attn @mpirvu. I can put up a fix when I get a chance. |
Just to note what we talked about: it's not immediately obvious that we should shut down the shared ROM class cache once the last client disconnects, so maybe the |
The way I am reading the code is the following:
|
I agree with this |
The JITServer expects that the shared ROM class cache will have been initialized only if the _clientSessionMap is empty. Fixes: eclipse-openj9#18631 Signed-off-by: Christian Despres <[email protected]>
During a purge operation, the JITServer will delete client session data:
openj9/runtime/compiler/runtime/JITClientSession.cpp
Lines 1229 to 1243 in 4af048a
It is possible for this operation to delete every entry in the
_clientSessionMap
. If it does, the next time a client connects, this code will run:openj9/runtime/compiler/runtime/JITClientSession.cpp
Lines 1122 to 1127 in 4af048a
However, the shared ROM class cache will have already been created, leading to an assert triggering in
initialize()
:openj9/runtime/compiler/runtime/JITServerSharedROMClassCache.cpp
Line 129 in 4af048a
I think the purge operation may need to check if
_clientSessionMap
is empty post-purge, and shut down the shared ROM class cache if it is. You can see that thedeleteClientSession()
function does this properly:openj9/runtime/compiler/runtime/JITClientSession.cpp
Lines 1172 to 1177 in 4af048a
The text was updated successfully, but these errors were encountered: