Segfaults in error traces caused by modules

Andrew Haley aph at redhat.com
Wed Nov 9 11:15:51 UTC 2016


On 09/11/16 11:03, Alan Bateman wrote:
> On 09/11/2016 11:42, Andrew Haley wrote:
> 
>> I'm seeing repeated segfaults in error traces.  These seem to be caused by
>>
>> void frame::print_on_error(outputStream* st, char* buf, int buflen, bool verbose) const {
>>    if (_cb != NULL) {
>>      if (Interpreter::contains(pc())) {
>>        Method* m = this->interpreter_frame_method();
>>        if (m != NULL) {
>>          m->name_and_sig_as_C_string(buf, buflen);
>>          st->print("j  %s", buf);
>>          st->print("+%d", this->interpreter_frame_bci());
>>          ModuleEntry* module = m->method_holder()->module();
>>          if (module->is_named()) {
>>            module->name()->as_C_string(buf, buflen);
>>            st->print(" %s", buf);
>>            module->version()->as_C_string(buf, buflen);
>>
>> where module->version() returns NULL.
>>
> The version is optional and so modules may be defined to the VM with a 
> version string of NULL. It may be that this code has only been tested 
> with images builds, where the platform modules have version ("9" or 
> "9-internal" ...). However with an exploded build then the platform 
> modules don't have a version string and I assume this is where you hit this.

Yes.  OK, so it's a bug.  Thanks.

Andrew.



More information about the hotspot-dev mailing list