develooper Front page | perl.perl5.porters | Postings from May 2012

[perl #5198] blessed object lost in anon sub from 'C' call

Thread Previous | Thread Next
From:
Brian Fraser via RT
Date:
May 21, 2012 18:52
Subject:
[perl #5198] blessed object lost in anon sub from 'C' call
Message ID:
rt-3.6.HEAD-4610-1337651555-1489.5198-15-0@perl.org
On Tue Jan 16 06:25:59 2001, madison@transmeta.com wrote:
> 
> -----------------------------------------------------------------
> [Please enter your report here]
> 
> I have a bug that I managed to isolate to these conditions:
> 
> 1)  C code starts a perl interpretor that blesses an object
> 2)  C code calls a perl function that creates an anon sub that
>     refers to the blessed object.
> 3)  C code calls a perl function that calls the anon sub.
> 
> Depending on where and how the blessed object was referred to in
> the code *around* the anon sub, it can become undefined in the anon
>    sub.
> 
> For example, if the blessed variable isn't mentioned except in
> the sub, it will get "lost" (and have an undef value in the sub).
> 
> If you just refer to it, then it won't get lost, and sometimes this
> fixes other creation of anon subs.  It has weird behavior, but it
> is reproducible.  Calling a subroutine (other than a builtin like
> print) inside the anon sub fixes the problem as well.
> 
> I tried to run it on perl 5.6.0, but my 5.6 is threaded, and
> that's another problem..
> 
> Here's the tar of my makefile, the C code and the perl code
> 
> begin 640 foo.tz.uu
> M'XL(`"3&9#H``^U7;6_B.!#F:_,K1BFZAI:7$$J18'LZ#M(6'7T14.FDMJ(A
> M,6W:$$>)T^V*Y7[[C6U2J':KO:N.[H?S\R&)QS/C\4S\V)Y2:E5RFX5I[IN-
> MNHEOTZI9=?XVJ_ORO43.;%BU:G6_AJHYLVH>-.HYJ&\X+H$T84X,D)LYGI_0
> M\$T]$MY]1#@?C2FO_ZGS2*9^0#8T!M;3/-A_L_[5:MU:U;^&\JI5JQWDP-Q0
> M/*_P/Z]_USYJ7_9'<`CX)VA:YZC7MX>'>>.S'WBN$WNP6W;=@G:^E,^E0A.%
> MAV6ZX`;]]O$0S4LNY(W>6:=_V;6'!:V?R?-&O_?[H#WHH11*0<(\=V]/VX:.
> M$^XP2!,"[)Z`7NI.*`T.W7LGUJ$$]R1T>8^?0'H7^"%)$NW"'O3'+^/=1B0.
> MH'1J/[-+Y@=)LVG/)L2#$H$=UZ412UH0Q7[(0+\.]=8.?(5$=NM)96VT2D6_
> ME:[[_\!UX''/MYJ&"2C3IK:5-SJ=`DY2QL6_UL+$YB=-RQO+)!>:V"TS67B5
> ME\Q-B<)*^97N6H#"5'YI6[]MKPPTS0V($V)0\0Q*\73=EU.F*0.7Q@0+2D'3
> MDA0G^;;^]?8N[/[UK9E'(A)Z:#)#RI"-];*+1(B8-2QQ]QS.SD?0M?OVR-9^
> M]I^N\#T(_I\Y?H@_]*;&^!'_'U@O^[_5,!N<_ZN*_S\&VW[H!JE'X)-/$Q83
> M9U:^_U5;2>T_1_;@[+6,T^-K";*Z3[E(JU2@]*_!K2XXYR:$I=$[?6`=F>\*
> M/[V0D3B*"3YAEU-GB_?&;,PC-SCKPV[BQG[$"C#7`*3$B>^2JQOD_[FN%V7W
> MHH6]&(Z(2VQ48FN@DP?B,G"0_#!C'OBAZ),V:,&'1#]<=^P$`76-`G<DVBX-
> M,<^IRP2GK^21$R=$R(IP=MG'9ZT(/"397"G&:9B9XOZ+!"QG)6<B-#SRW1&F
> M,2%KEAX=NQC<TC"KP$/ZD,+,N?/=QR:*O>%%2^,SNAR>G+8'?QA)5!`".1>T
> M'T=/ALX_]"(<C[N]8:<]Z'X]'I^=MP>X18FAWOU3C'`FN/UXY)TN^/;/R<W@
> M'YA,M[BL-2_VTTN#A$\13P/.:^T_T9$;RU&@BPR^9.L_::RJ)EK//C.J,E4?
> MO?X%_\N);FR,'Y[_D>PS_J\=U#C_HZ+B_X\`/X`C6_@NPV4]^P)Y)Z1ABY\/
> M)S#"LVFGW6\/8`Z\:X*<5C5;R'DLC4.8!'@JA^O\I`4+H7]DCSHGJ+OL+Y7R
> M\_SXRKQ99`K#T?G`7BEDW;"'UX3Q5?6&ZXD@&*[[EL9\(C^+L,-7\4X1+,M:
> MQNG2%-?T(9@MX9JO+4%D_A2,O;VL&P.6_`;2$Y^!Q=?<`DB0<-V5II5IXN6$
> MSF8$I>("$I)G!OP.`OPPS$D_)#[R?0P\5\!'_TSCQV0U2FMK&P9DBAJ,BIU!
> MI`IO$,N-PYCZSR21N1:1%Z2M:!\*C_/L\G)"OC2E5WZ-`;$C+9;S7,5>RV+_
> M92Z\+"2S?*NX_Y*.]P]6?VLP?"Q+V[!^"ILI*"@H*"@H*"@H*"@H*"@H*"@H
> -*"AD^!LFL2<\`"@`````
> `
> end
> 
> 
> [Please do not change anything below this line]
> -----------------------------------------------------------------
> 
> ---
> Site configuration information for perl 5.00503:
> 
> Configured by root at Mon Aug 30 23:08:56 EDT 1999.
> 
> Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
>   Platform:
>     osname=linux, osvers=2.2.5-22smp, archname=i386-linux
>     uname='linux porky.devel.redhat.com 2.2.5-22smp #1 smp wed jun 2
>    09:11:51 edt 1999 i686 unknown '
>     hint=recommended, useposix=true, d_sigaction=define
>     usethreads=undef useperlio=undef d_sfio=undef
>   Compiler:
>     cc='cc', optimize='-O2', gccversion=egcs-2.91.66 19990314/Linux
>    (egcs-1.1.2 release)
>     cppflags='-Dbool=char -DHAS_BOOL -I/usr/local/include'
>     ccflags ='-Dbool=char -DHAS_BOOL -I/usr/local/include'
>     stdchar='char', d_stdstdio=undef, usevfork=false
>     intsize=4, longsize=4, ptrsize=4, doublesize=8
>     d_longlong=define, longlongsize=8, d_longdbl=define,
>    longdblsize=12
>     alignbytes=4, usemymalloc=n, prototype=define
>   Linker and Libraries:
>     ld='cc', ldflags =' -L/usr/local/lib'
>     libpth=/usr/local/lib /lib /usr/lib
>     libs=-lnsl -ldl -lm -lc -lposix -lcrypt
>     libc=, so=so, useshrplib=false, libperl=libperl.a
>   Dynamic Linking:
>     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-
>    rdynamic'
>     cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
> 
> Locally applied patches:
> 
> 
> ---
> @INC for perl 5.00503:
>     /usr/lib/perl5/5.00503/i386-linux
>     /usr/lib/perl5/5.00503
>     /usr/lib/perl5/site_perl/5.005/i386-linux
>     /usr/lib/perl5/site_perl/5.005
>     .
> 
> ---
> Environment for perl 5.00503:
>     HOME=/home/madison
>     LANG (unset)
>     LANGUAGE (unset)
>     LD_LIBRARY_PATH (unset)
>     LOGDIR (unset)
>     PATH=/home/madison/bin/i386-linux-
>    libc6:/home/madison/bin:/usr/local/bin/i386-linux-
>    
libc6:/usr/local/bin:/usr/local/contrib/bin:/bin:/usr/bin:/usr/X11R6/bin
:.:/proj/validation/bin/i386-
>    linux-libc6:/proj/validation/bin:/proj/hw/bin/i386-linux-
>    libc6:/proj/hw/bin:/proj/sw/r5/fred/i386-linux-
>    
libc6/bin:/cad/polaris/current/exe:/cad/innologic/current/scripts:/cad/s
cripts:/cad/ssi/current/bin/:/usr/local/lsf/bin:/usr/local/contrib/bin
>     PERL_BADLANG (unset)
>     SHELL=/bin/tcsh

I think that this was solved somewhere along the road:
hugmeir@naw:~/foo2$ ./main 
Hey: 21
Hey: 20

I get the same thing when commenting the line indicated in foo.pl. But I 
had to change the .cc a bit to make it compile, so maybe I screwed 
something up along the way; If someone can confirm, this ticket could be 
closed.


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

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