develooper Front page | perl.perl5.porters | Postings from November 2011

Re: AIX and stdbool.h (was Re: Fw: Smoke [5.15.3] v5.15.3-43-g6692294FAIL(M) AIX 5.3.0.0/ML09 (PPC/1 cpu))

Thread Previous | Thread Next
From:
Rainer Tammer
Date:
November 1, 2011 07:24
Subject:
Re: AIX and stdbool.h (was Re: Fw: Smoke [5.15.3] v5.15.3-43-g6692294FAIL(M) AIX 5.3.0.0/ML09 (PPC/1 cpu))
Message ID:
4EB00108.7090503@tammer.net
Hello,
OK, I'll try that tomorrow.

Bye
  Rainer

On 31.10.2011 16:31, Nicholas Clark wrote:
> On Sun, Oct 30, 2011 at 11:04:26AM +0100, Rainer Tammer wrote:
>> Hello,
>> Just to let you know, I did a static non shared build and the problem is
>> the same.
>> So fortunately we do not have to deal with threading/shared stuff.
> At least some good news.
>
>> Unfortunately I can not break at gv.c:2015. The whole thing seems to
>> fail before that:
>>
>>
>> # dbx ./miniperl
>> Type 'help' for help.
>> reading symbolic information ...
>> (dbx) stop at "gv.c":2015
>> [1] stop at "gv.c":2015
>> (dbx) run -le 'print length $^V'
>>
>>
>> execution completed
>> (dbx)
>> ---------------------------------
>> # gdb ./miniperl
>> GNU gdb 6.8
>> Copyright (C) 2008 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "powerpc-ibm-aix5.1.0.0"...
>> (gdb) b gv.c:2015
>> Breakpoint 1 at 0x100808b0: file gv.c, line 2015.
>> (gdb) run -le 'print length $^V'
>> Starting program: /daten/source/perl-current_32/miniperl -le 'print
>> length $^V'
>>
>>
>> Program exited normally.
>> (gdb)
> Strange. That's an exit with no output?
>
>
> Another way to try to get to line 2015 would be something like this.
> I've changed the one-liner to do the work inside eval so that I can put
> a breakpoint on perl_run() and skip all the calls during perl interpreter
> setup. Clearing the breakpoint on Perl_gv_fetchpvn_flags is necessary
> because otherwise it will stop in lots of calls within Perl_version_new().
> I hope that this can get to a dump of $^V on AIX at the point in question:
>
> $ gdb ./miniperl
> GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:33:48 UTC 2011)
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ... done
>
> (gdb) b perl_run
> Breakpoint 1 at 0x100007d52: file perl.c, line 2281.
> (gdb) run -le 'eval q{print length $^V}'
> Starting program: /Volumes/Stuff/Perl/perl/miniperl -le 'eval q{print length $^V}'
> Reading symbols for shared libraries ++.. done
>
> Breakpoint 1, perl_run (my_perl=0x100500080) at perl.c:2281
> 2281        int ret = 0;
> (gdb) b Perl_gv_fetchpvn_flags
> Breakpoint 2 at 0x10005a721: file gv.c, line 1436.
> (gdb) c
> Continuing.
>
> Breakpoint 2, Perl_gv_fetchpvn_flags (nambeg=0x100508210 "length", full_len=6, flags=0, sv_type=SVt_PVCV) at gv.c:1436
> 1436        register const char *name = nambeg;
> (gdb) 
> Continuing.
>
> Breakpoint 2, Perl_gv_fetchpvn_flags (nambeg=0x100508211 "\026", full_len=1, flags=10, sv_type=SVt_PV) at gv.c:1436
> 1436        register const char *name = nambeg;
> (gdb) clear
> Deleted breakpoint 2 
> (gdb) n
> 1437        register GV *gv = NULL;
> (gdb) 
> 1441        HV *stash = NULL;
> (gdb) 
> 1442        const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
> (gdb) 
> 1443        const I32 no_expand = flags & GV_NOEXPAND;
> (gdb) 
> 1444        const I32 add = flags & ~GV_NOADD_MASK;
> (gdb) 
> 1445        const U32 is_utf8 = flags & SVf_UTF8;
> (gdb) 
> 1446        bool addmg = !!(flags & GV_ADDMG);
> (gdb) 
> 1447        const char *const name_end = nambeg + full_len;
> (gdb) 
> 1448        const char *const name_em1 = name_end - 1;
> (gdb) 
> 1451        PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
> (gdb) 
> 1453        if (flags & GV_NOTQUAL) {
> (gdb) 
> 1459        if (full_len > 2 && *name == '*' && isIDFIRST_lazy_if(name + 1, is_utf8)) {
> (gdb) 
> 1464        for (name_cursor = name; name_cursor < name_end; name_cursor++) {
> (gdb) 
> 1465            if (name_cursor < name_em1 &&
> (gdb) 
> 1464        for (name_cursor = name; name_cursor < name_end; name_cursor++) {
> (gdb) 
> 1531        len = name_cursor - name;
> (gdb) 
> 1535        if (!stash) {
> (gdb) 
> 1537            if (len && isIDFIRST_lazy(name)) {
> (gdb) 
> 1619                stash = PL_defstash;
> (gdb) 
> 1624        if (!stash) {
> (gdb) 
> 1647        if (!SvREFCNT(stash))       /* symbol table under destruction */
> (gdb) 
> 1650        gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -len : len,add);
> (gdb) 
> 1651        if (!gvp || *gvp == (const GV *)&PL_sv_undef) {
> (gdb) 
> 1655        else gv = *gvp, addmg = 0;
> (gdb) 
> 1659        if (SvTYPE(gv) == SVt_PVGV) {
> (gdb) 
> 1679        } else if (no_init) {
> (gdb) 
> 1682        } else if (no_expand && SvROK(gv)) {
> (gdb) 
> 1694        faking_it = SvOK(gv);
> (gdb) 
> 1696        if (add & GV_ADDWARN)
> (gdb) 
> 1699        gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8);
> (gdb) 
> 1701        if ( isIDFIRST_lazy_if(name, is_utf8)
> (gdb) 
> 1706        if (stash != PL_defstash) { /* not the main stash */
> (gdb) 
> 1745        else if (len > 1) {
> (gdb) 
> 1878            switch (*name) {
> (gdb) 
> 2014                SV * const sv = GvSV(gv);
> (gdb) 
> 2015                GvSV(gv) = new_version(PL_patchlevel);
> (gdb) p sv
> $1 = (SV * const) 0x0
> (gdb) call Perl_sv_dump(PL_patchlevel)
> SV = PV(0x100801040) at 0x100802cc0
>   REFCNT = 1
>   FLAGS = (POK,pPOK)
>   PV = 0x100500860 "v5.15.4"\0
>   CUR = 7
>   LEN = 16
> (gdb) n
> 2016                SvREADONLY_on(GvSV(gv));
> (gdb) call Perl_sv_dump(gv->sv_u.svu_gp->gp_sv)
> SV = PV(0x100801150) at 0x100812710
>   REFCNT = 1
>   FLAGS = (ROK)
>   RV = 0x100812740
>     SV = PVHV(0x100807b80) at 0x100812740
>       REFCNT = 1
>       FLAGS = (OBJECT,OVERLOAD,SHAREKEYS)
>       STASH = 0x100803338       "version"
>       ARRAY = 0x1005088d0  (0:6, 1:1, 2:1)
>       hash quality = 90.0%
>       KEYS = 3
>       FILL = 2
>       MAX = 7
>       RITER = -1
>       EITER = 0x0
>         Elt "original" HASH = 0xb45e44f2
>         SV = PV(0x100801180) at 0x1008128d8
>           REFCNT = 1
>           FLAGS = (POK,pPOK)
>           PV = 0x100506090 "v5.15.4"\0
>           CUR = 7
>           LEN = 16
>         Elt "qv" HASH = 0x18c4b28a
>         SV = IV(0x100812868) at 0x100812878
>           REFCNT = 1
>           FLAGS = (IOK,pIOK)
>           IV = 1
>         Elt "version" HASH = 0x68c27e33
>         SV = IV(0x1008128e0) at 0x1008128f0
>           REFCNT = 1
>           FLAGS = (ROK)
>           RV = 0x100802fc0
>             SV = PVAV(0x100804088) at 0x100802fc0
>               REFCNT = 1
>               FLAGS = ()
>               ARRAY = 0x100508910
>               FILL = 2
>               MAX = 3
>               ARYLEN = 0x0
>               FLAGS = (REAL)
>                 Elt No. 0
>                 SV = IV(0x100812880) at 0x100812890
>                   REFCNT = 1
>                   FLAGS = (IOK,pIOK)
>                   IV = 5
>                 Elt No. 1
>                 SV = IV(0x100812898) at 0x1008128a8
>                   REFCNT = 1
>                   FLAGS = (IOK,pIOK)
>                   IV = 15
>                 Elt No. 2
>                 SV = IV(0x1008128b0) at 0x1008128c0
>                   REFCNT = 1
>                   FLAGS = (IOK,pIOK)
>                   IV = 4
>   PV = 0x100812740 ""
>   CUR = 0
>   LEN = 0
> (gdb) 
>
>
> Nicholas Clark
>
>


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