(copying to the mailing list)

在 Tuesday 11 August 2009 18:03:53,Robert Starr 写道:
> On Tue, Aug 11, 2009 at 11:49 PM, Vadim Konovalov <vad...@gmail.com> wrote:
> > 在 Monday 10 August 2009 17:13:35,Robert Starr 写道:
>
> > Didn't you turned off the so-called "stubs"?
> >
> > perl Makefile.PL --nousestubs
>
> That seems to have fixed it. Thanks.

Now I've tried - I've downloaded most recent ActiveTCL and ActivePerl and 
found out that indeed  "--nousestubs" do not segmentation fault, while 
default "usestubs" does segfault.

I suspect that ActiveState distribution do not face this problem because it 
ships Tcl/Tk within ActivePerl differently - it is "tkkit.dll" on Windows and 
I guess something similar on other OSes.

I use yet another distribution technique.


>
> I agee, but it's unusual to have a module pass all tests and then fail
> immediately on loading. 

Test runs with environment variable PERL_DL_NONLAZY=1, which makes Perl to 
perform all bindings at once.

p100 Tcl-0.97 # ap perl -Mblib -we 'use Tcl;'
/Personal/bin/ap: line 3: 27341 Segmentation fault      ${1+"$@"}
p100 Tcl-0.97 # PERL_DL_NONLAZY=1 ap perl -Mblib -we 'use Tcl;'
p100 Tcl-0.97 #

I suspect the Tcl.xs code should do some more action to avoid the segfault?
Some additional initialization after stub is dl-opened?

Also, after I've installed ActiveTCL I see in the /opt/ActiveTcl-8.5/lib/ 
directory two files - libtkstub8.5.a and libttkstub.a, both are different 
sizes and one has executable flag.

I wonder why this is so? When tkstubs is needed? what is the difference 
between libtkstub8.5.a and libttkstub.a ?

Obviously, the fresh release of Tcl module is needed - I see updated "stubs" 
file at 
http://tcltkce.cvs.sourceforge.net/viewvc/tcltkce/Tcl/ChangeLog?view=log
, but IMO that file is not relevant to the current problem.
A bit more touches in Tcl.xs also desireable.

I will be grateful if anyone will share their knowledge on the questions I'm 
wondering.

Regards,
Vadim.

Reply via email to