RFR: 8263775: C2: igv_print() crash unexpectedly when called from debugger [v2]
Christian Hagedorn
chagedorn at openjdk.java.net
Thu Mar 18 09:15:50 UTC 2021
On Thu, 18 Mar 2021 06:55:59 GMT, Yi Yang <yyang at openjdk.org> wrote:
>> When investigating another c2 crash, I found igv_print crashed unexpectedly when called from the debugger. The problem is no matter whether we have created an igv printer in `Compile::igv_print_method_to_file`:
>>
>> https://github.com/openjdk/jdk/blob/444a80b920f7cb61b4607d9d245d410bf872b27f/src/hotspot/share/opto/compile.cpp#L4792-L4800
>>
>> `Compile:: should_print`(called by `print_method()`) is not aware of _debug_file_printer, it would create a new one, and entering into unexpected network_stream initialization(See hs_err on JBS):
>>
>> https://github.com/openjdk/jdk/blob/444a80b920f7cb61b4607d9d245d410bf872b27f/src/hotspot/share/opto/compile.hpp#L628-L638
>>
>> For debugging purposes, we can skip checking should_print(), printing graph directly. (But even if applying this patch, igv_print can not work well since it seems produces an ill-formed ideal graph whose tags are not enclosed, thus can not be recognized by idealgraphvisualizer, this looks like a related by different fix, so I might create another PR to address this?)
>>
>> Thanks!
>> Yang
>
> Yi Yang has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR.
Looks good to me. It makes sense to skip `should_print`. I think I only tested it back there with an open IGV. But the print to file version should also work with a closed IGV. For the network version, you have to have an open IGV anyways but it's better to directly have a call to `print`, too.
-------------
Marked as reviewed by chagedorn (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/3065
More information about the hotspot-compiler-dev
mailing list