Front page | perl.perl5.porters |
Postings from January 2001
[ID 20010116.003] blessed object lost in anon sub from 'C' call
Thread Next
From:
madison
Date:
January 16, 2001 14:26
Subject:
[ID 20010116.003] blessed object lost in anon sub from 'C' call
Message ID:
200101162225.OAA13430@madison.transmeta.com
This is a bug report for perl from perlbug@daveola.com,
generated with the help of perlbug 1.26 running under perl 5.00503.
-----------------------------------------------------------------
[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/scripts:/cad/ssi/current/bin/:/usr/local/lsf/bin:/usr/local/contrib/bin
PERL_BADLANG (unset)
SHELL=/bin/tcsh
Thread Next
-
[ID 20010116.003] blessed object lost in anon sub from 'C' call
by madison