[PATCH][BZ #18508] S390: Fix "backtrace() returns infinitely deep stack frames with makecontext()".
H.J. Lu
hjl.tools@gmail.com
Tue Jul 7 17:47:00 GMT 2015
On Tue, Jul 7, 2015 at 10:31 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Fri, Jul 3, 2015 at 2:11 AM, Florian Weimer <fweimer@redhat.com> wrote:
>> On 06/15/2015 10:47 AM, Stefan Liebler wrote:
>>> +/* We do not want .eh_frame info for __makecontext_ret to stop unwinding
>>> + if backtrace() was called within a context created by makecontext.
>>> + (there is also no .eh_frame info for _start or thread_start) */
>>
>>> +/* We do not want .eh_frame info for __makecontext_ret to stop unwinding
>>> + if backtrace() was called within a context created by makecontext.
>>> + (there is also no .eh_frame info for _start or thread_start) */
>>
>> I think this should read:
>>
>> “We do not want .eh_frame ifno so that __makecontext_ret stops unwinding
>> if backtrace was called within a context created by makecontext. (There
>> is also no .eh_frame info for _start or thread_start.)”
>>
>> Could a native speaker review this, please?
>>
>> Rest of the patch seems okay to me.
>>
>
> The new test failed on Fedora/22/ i686:
>
> cf (i=-78) at tst-makecontext.c:50
> 50 {
> (gdb)
> 55 if (i != othervar || thr != 94)
> (gdb)
> 51 struct trace_arg arg = { .size = 100, .cnt = -1 };
> (gdb)
> 55 if (i != othervar || thr != 94)
> (gdb)
> 66 handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
> (gdb)
> 67 if (handle != NULL)
> (gdb)
> 66 handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
> (gdb)
> 67 if (handle != NULL)
> (gdb)
> 69 unwind_backtrace = dlsym (handle, "_Unwind_Backtrace");
> (gdb)
> 70 if (unwind_backtrace != NULL)
> (gdb)
> 72 unwind_backtrace (backtrace_helper, &arg);
> (gdb)
>
> Program received signal SIGSEGV, Segmentation fault.
> 0xf7de14a1 in ?? () from /lib/libgcc_s.so.1
>
I opened:
https://sourceware.org/bugzilla/show_bug.cgi?id=18635
--
H.J.
More information about the Libc-alpha
mailing list