SEGV in EdgeUtils::field_name_symbol(Edge const&)

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Feb 19 19:52:28 UTC 2020


Hi Tony!

Thanks for filing:

     JDK-8239497 SEGV in EdgeUtils::field_name_symbol(Edge const&)
     https://bugs.openjdk.java.net/browse/JDK-8239497

I've added hotspot-jfr-dev at ... alias to this thread, but the JFR
folks usually lurk on the Serviceability alias also.

Dan



On 2/19/20 1:33 PM, Tony Printezis wrote:
> FWIW, this is the stack trace when the crash happens:
>
> EdgeUtils::field_name_symbol(Edge const&)
> ObjectSampleWriter::write(StoredEdge const*)
> ObjectSampleWriter::operator()(StoredEdge&)
> ObjectSampleCheckpoint::write(ObjectSampler*, EdgeStore*, bool, Thread*)
> EventEmitter::write_events(ObjectSampler*, EdgeStore*, bool)
> PathToGcRootsOperation::doit()
> VM_Operation::evaluate()
> VMThread::evaluate_operation(VM_Operation*)
> VMThread::loop()
> VMThread::run()
>
>
> —————
> Tony Printezis | @TonyPrintezis | tprintezis at twitter.com 
> <mailto:tprintezis at twitter.com>
>
>
> On February 19, 2020 at 1:22:35 PM, Tony Printezis 
> (tprintezis at twitter.com <mailto:tprintezis at twitter.com>) wrote:
>
>> Hi,
>>
>> (Is this the right mailing list for this?)
>>
>> I’ve been looking at a SEGV in EdgeUtils::field_name_symbol(Edge 
>> const&) that we have been seeing in our nightly testing when running 
>> jdk/jfr/jcmd/TestJcmdDump.java. I can reproduce it using graal and 
>> parallel gc (cms also) on Linux with our 11 release, as well as 
>> OpenJDK 11u, 12, 13, and 14.
>>
>> The culprit seems to be this method:
>>
>> static const InstanceKlass* field_type(const StoredEdge& edge) {
>> assert(!edge.is_root() || !EdgeUtils::is_array_element(edge), 
>> "invariant");
>>   return (const InstanceKlass*)edge.reference_owner_klass();
>> }
>>
>> In fact, edge.reference_owner_klass()->is_instance_klass() == false, 
>> as the class here seems to be an object array class (I’ve seen 
>> [Ljava.lang.Class; and [Ljava.lang.Enum;).
>>
>> Is this a known issue? I’m not familiar with this code. Should 
>> field_name_symbol() return NULL in this case?
>>
>> Thanks,
>>
>> Tony
>>
>>
>> —————
>> Tony Printezis | @TonyPrintezis | tprintezis at twitter.com 
>> <mailto:tprintezis at twitter.com>
>>



More information about the hotspot-jfr-dev mailing list