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