Skip to content

Deadlock prevention on @NotCheckpointSafe frames - #15540

Merged
gacholio merged 1 commit into
eclipse-openj9:masterfrom
tajila:criu2
Jul 20, 2022
Merged

Deadlock prevention on @NotCheckpointSafe frames#15540
gacholio merged 1 commit into
eclipse-openj9:masterfrom
tajila:criu2

Conversation

@tajila

@tajila tajila commented Jul 13, 2022

Copy link
Copy Markdown
Contributor

Deadlock prevention on @NotCheckpointSafe frames

There are certain operations in the JCL that acquire a global lock (ie.
methodType interning). The PR introduces a new mechanism to delay taking
a checkpoint (for a certain amount of attempts) while a non checkpoint
thread owns the global resource.

Fixes: #15367

Signed-off-by: Tobi Ajila atobia@ca.ibm.com

@tajila
tajila force-pushed the criu2 branch 2 times, most recently from b913b55 to 900fff1 Compare July 13, 2022 19:39
@tajila
tajila requested a review from gacholio July 13, 2022 19:39
@tajila

tajila commented Jul 13, 2022

Copy link
Copy Markdown
Contributor Author

@gacholio Please take a look at these changes

@tajila

tajila commented Jul 13, 2022

Copy link
Copy Markdown
Contributor Author

Jenkins test sanity xlinuxcriu jdk11

@gacholio

Copy link
Copy Markdown
Contributor

You should probably update the DDR rom dumper with the new bit.

Comment thread jcl/src/java.base/share/classes/java/lang/invoke/MethodType.java Outdated
Comment thread runtime/bcutil/ClassFileOracle.cpp Outdated
Comment thread runtime/bcutil/ClassFileOracle.hpp Outdated
Comment thread runtime/oti/cfr.h Outdated
Comment thread runtime/oti/j9modifiers_api.h Outdated
@tajila

tajila commented Jul 18, 2022

Copy link
Copy Markdown
Contributor Author

@gacholio

You should probably update the DDR rom dumper with the new bit.

I couldnt find an example of this for other annotations like @hidden and @callersensitive, do you know where we do this?

@gacholio

Copy link
Copy Markdown
Contributor

It's entirely possible that they were missed too. I believe the DDR dumper is used far far more than cfdump these days, so that's where we really need the proper decode.

Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
@tajila

tajila commented Jul 18, 2022

Copy link
Copy Markdown
Contributor Author

It's entirely possible that they were missed too. I believe the DDR dumper is used far far more than cfdump these days, so that's where we really need the proper decode.

I created a new PR to address that, #15561

@tajila
tajila force-pushed the criu2 branch 2 times, most recently from ae7d0a6 to f2246d1 Compare July 19, 2022 17:14
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
Comment thread runtime/criusupport/criusupport.cpp Outdated
@gacholio

Copy link
Copy Markdown
Contributor

You can launch appropriate testing.

@tajila

tajila commented Jul 19, 2022

Copy link
Copy Markdown
Contributor Author

Jenkins test sanity win jdk8

@tajila

tajila commented Jul 19, 2022

Copy link
Copy Markdown
Contributor Author

Jenkins test sanity xlinuxcriu jdk11

@gacholio

Copy link
Copy Markdown
Contributor
15:31:23  F:\Users\jenkins\workspace\Build_JDK8_x86-64_windows_Personal\openj9\runtime\bcutil\ClassFileOracle.cpp(93): error C2062: type 'bool' unexpected
15:31:23  F:\Users\jenkins\workspace\Build_JDK8_x86-64_windows_Personal\openj9\runtime\bcutil\ClassFileOracle.cpp(94): error C2143: syntax error: missing ';' before '{'
15:31:23  F:\Users\jenkins\workspace\Build_JDK8_x86-64_windows_Personal\openj9\runtime\bcutil\ClassFileOracle.cpp(94): error C2447: '{': missing function header (old-style formal list?)

Comment thread runtime/bcutil/ClassFileOracle.cpp Outdated
@tajila

tajila commented Jul 19, 2022

Copy link
Copy Markdown
Contributor Author

Jenkins test sanity win jdk8

@tajila

tajila commented Jul 19, 2022

Copy link
Copy Markdown
Contributor Author

Comment thread runtime/bcutil/ClassFileOracle.cpp Outdated
There are certain operations in the JCL that acquire a global lock (ie.
methodType interning). The PR introduces a new mechanism to delay taking
a checkpoint (for a certain amount of attempts) while a non checkpoint
thread owns the global resource.

Fixes: eclipse-openj9#15367

Signed-off-by: Tobi Ajila <atobia@ca.ibm.com>
@tajila

tajila commented Jul 20, 2022

Copy link
Copy Markdown
Contributor Author

Jenkins test sanity win jdk8

@tajila

tajila commented Jul 20, 2022

Copy link
Copy Markdown
Contributor Author

The xlinux build passed as well

@gacholio
gacholio merged commit 54d3c53 into eclipse-openj9:master Jul 20, 2022
@tajila tajila added the criu Used to track CRIU snapshot related work label Jul 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

criu Used to track CRIU snapshot related work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CRIU: Better deadlock handling in core JDK code

3 participants