[PATCH][BZ #18508] S390: Fix "backtrace() returns infinitely deep stack frames with makecontext()".
H.J. Lu
hjl.tools@gmail.com
Tue Jul 7 17:31:00 GMT 2015
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
--
H.J.
More information about the Libc-alpha
mailing list