https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106813
Bug ID: 106813 Summary: getSiginfo() libgo/runtime/go-signal.c missing Solaris specific code to get ret.sigpc Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: sumbera at volny dot cz Target Milestone: --- Created attachment 53531 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53531&action=edit Proposed patch file. getSiginfo() in libgo/runtime/go-signal.c is missing Solaris specific code to get ret.sigpc and thus it calls runtime_callers(). It was observed that sometimes call to runtime_callers() ends with segmentation fault (because sparc64_is_sighandler() gets wrong pc - e.g. 0x8): ffffffff7ac13fe1 libgcc_s.so.1`uw_frame_state_for+0x434(ffffffff7ac14950, ffffffff7ac14d40, ffffffff6ab59e50, ffffffff6ab66a8d, 0, ffffffff6ab66a8d) ffffffff7ac140a1 libgcc_s.so.1`_Unwind_Backtrace+0x54(ffffffff6a9ce33c, ffffffff7ac154d0, 0, ffffffff7ac14d40, ffffffff7ac14950, 0) ffffffff7ac14c21 libgo.so.14`backtrace_full+0x70(ffffffff7f5c8000, 1, ffffffff6a4c1790, ffffffff6a4c1abc, ffffffff7ac155b8, ffffffff6b09d3b8) ffffffff7ac14d01 libgo.so.14`runtime_callers+0x78(6, ffffffff7ac156a0, ffffffff7f5c8000, 0, ffffffff6a4c1abc, ffffffff6b0c7d7c) ffffffff7ac14dd1 libgo.so.14`runtime.getSiginfo+0x1c(ffffffff7ac15ef0, ffffffff7ac15c10, 0, 0, 0, 61e000000000) ffffffff7ac14ed1 libgo.so.14`runtime.sigtrampgo+0x39c(12, ffffffff7ac15ef0, ffffffff7ac15c10, ffffffff6ad81b88, 36, c0010c6800) ffffffff7ac15101 libc.so.1`__sighndlr+0xc(12, ffffffff7ac15ef0, ffffffff7ac15c10, ffffffff6a4c2ebc, 0, ffffffff7ed24000) ffffffff7ac151b1 libc.so.1`call_user_handler+0x404(d, ffffffff7ac15ef0, ffbffeff, 0, 12, ff) ffffffff7ac152a1 libc.so.1`sigacthandler+0xe0(12, ffffffff7ac15ef0, ffffffff7ac15c10, 0, 0, ffffffff7ed24000) ffffffff21bff741 libgo.so.14`runtime.kickoff(0, 0, 0, 0, 0, 0) This can be avoided by setting ret.sigpc via platform specific code as it's done on other systems. See attached patch file.