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