RFR: 8344013: "bad tag in log" assert with +LogCompilation +CITimeVerbose [v2]
Sonia Zaldana Calles
szaldana at openjdk.org
Mon Nov 25 15:36:00 UTC 2024
> Hi folks,
>
> This PR addresses [8344013](https://bugs.openjdk.org/browse/JDK-8344013).
>
> Sometimes the writing to xmlStream is mixed from several threads, and therefore the xmlStream tag stack can end up in a bad state. When this occurs, the VM crashes in `xmlStream::pop_tag` with `assert(false) failed: bad tag in log`.
>
> In this case, running `java -XX:+LogCompilation -XX:CompileCommand="log,*.*" -XX:+CITimeVerbose -Xcomp -Xbatch -version` , `xmlStream::pop_tag` is expecting to pop the tag `task` but finds `phase` instead.
>
> I found the issue stems from [8330157](https://bugs.openjdk.org/browse/JDK-8330157). The problematic code is in the destructor for [TracePhase](https://github.com/openjdk/jdk/blame/master/src/hotspot/share/opto/compile.cpp#L4337).
>
> Note how the constructor adds the [phase tag](https://github.com/openjdk/jdk/blame/master/src/hotspot/share/opto/compile.cpp#L4327).
>
> However, in the destructor, if we return early, we don’t pop that tag, leading to the xmlStream tag stack to end up in a bad state. With this patch, I made sure we pop the tag even if we return early.
>
> Cheers,
> Sonia
Sonia Zaldana Calles has updated the pull request incrementally with one additional commit since the last revision:
Adding regression test
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/22331/files
- new: https://git.openjdk.org/jdk/pull/22331/files/2725d240..66778c89
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=22331&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=22331&range=00-01
Stats: 40 lines in 1 file changed: 40 ins; 0 del; 0 mod
Patch: https://git.openjdk.org/jdk/pull/22331.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22331/head:pull/22331
PR: https://git.openjdk.org/jdk/pull/22331
More information about the hotspot-compiler-dev
mailing list