develooper Front page | perl.perl5.porters | Postings from June 2019

[perl #134172] commit 027471cf breaks t/op/sprintf2.t on FreeBSD-11

Thread Previous | Thread Next
From:
Hugo van der Sanden via RT
Date:
June 6, 2019 15:47
Subject:
[perl #134172] commit 027471cf breaks t/op/sprintf2.t on FreeBSD-11
Message ID:
rt-4.0.24-26845-1559836022-1173.134172-15-0@perl.org
On Thu, 06 Jun 2019 08:16:29 -0700, jkeenan wrote:
> > (gdb) next
> > 13092                   Perl_croak(aTHX_ "Numeric format result too
> > large");
> > 2: *PL_locale_mutex = {m_lock = {m_owner = 0, m_flags = 0, m_ceilings
> > = 0x801e1c1e8, m_rb_lnk = 0,
> >     m_spare = 0x801e1c1f8}, m_flags = 1, m_count = 0, m_spinloops =
> > 0,
> > m_yieldloops = 0, m_ps = 0,
> >  m_qe = {tqe_next = 0x0, tqe_prev = 0x0}, m_pqe = {tqe_next = 0x0,
> > tqe_prev = 0x0}, m_rb_prev = 0x0}
> > 1: PL_locale_mutex = 0x801e1c1e0

Ok, so at this point it still looks valid ...

> > Program received signal SIGSEGV, Segmentation fault.
> > 0x0000000000597ad9 in Perl_dounwind (my_perl=0x801e22000, cxix=-1) at
> > pp_ctl.c:1550
> > 1550            CX_LEAVE_SCOPE(cx);
> > 2: *PL_locale_mutex = Error accessing memory address 0x2: Bad
> > address.
> > Disabling display 2 to avoid infinite recursion.

.. but by the time we get here it has been corrupted to 0x2.

I think it's worth another go at the 'watch', but if that fails we may have to step through with 'next' and 'step' until the displayed value changes. If we set the watchpoint later, it may work better:

shell% gdb --args ./perl -we 'my $x = sprintf("%7000000000E", 0)'
(gdb) break sv.c:13092
(gdb) run
.. break at sv.c:13092 (the croak call)
(gdb) watch PL_locale_mutex
(gdb) cont

As before, it should not take more than a few minutes after the 'cont'.

Hugo

---
via perlbug:  queue: perl5 status: open
https://rt.perl.org/Ticket/Display.html?id=134172

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About