Subject: Re: WML (perl-based program) segfaults
From: "Gerrit P. Haase" <[email-masked]>
To: Wolfgang Schnerring <[email-masked]>
Cc: [email-masked]
Date: Wed, 11 Feb 2004 23:35:39 +0100

Hallo Wolfgang,

Am Dienstag, 10. Februar 2004 um 16:26 schriebst du:

> Hello!

> I had used WML (offline HTML generator, Perl-based, version 2.0.9,
> <http://thewml.org>) happily under Cygwin with no problems whatsoever.
> Then along came some system-upgrade[1], and boom, eperl (a
> subcomponent of WML) just dies when trying to open a file. (That
> means, e.g. "eperl --help" produces some output, so the program
> doesn't *completely* just die) The other WML-components still work
> just fine.

> I'm no expert on debugging this kind of things, but I ./configure'd
> WML with --enable-debug and was able to get this from gdb:

> ###
> $ gdb eperl
> This GDB was configured as "i686-pc-cygwin"...
> Minimal symbols from eperl.exe...(no debugging symbols found)...
> [I think that's strange, as I *did* say --enable-debug]

Try also to define some debugging flags for the tools, hmmm, in the
eperl configure is already defined: CFLAGS='-g' && LDFLAGS='-g', maybe
it is neccessary to rebuild perl with symbols too?

> (gdb) run README
> [this just proves the point that the actual file doesn't matter]

> Starting program:
> /cygdrive/d/wosc/install/Cygwin/wml-2.0.9/wml_backend/p3_eperl/eperl.exe
> README

> Program received signal SIGSEGV, Segmentation fault.
> 0x1000ad60 in cygperl5_8_2!Perl_malloc () from /usr/bin/cygperl5_8_2.dll
> (gdb) bt
> #0  0x1000ad60 in cygperl5_8_2!Perl_malloc () from /usr/bin/cygperl5_8_2.dll
> #1  0x1007254c in cygperl5_8_2!Perl_sv_add_arena () from /usr/bin/cygperl5_8_2.dll
> #2  0x1007dc8b in cygperl5_8_2!Perl_newSVpvn () from /usr/bin/cygperl5_8_2.dll
> #3  0x10058488 in cygperl5_8_2!Perl_savesharedpv () from /usr/bin/cygperl5_8_2.dll
> #4  0x100586b7 in cygperl5_8_2!Perl_vmess () from /usr/bin/cygperl5_8_2.dll
> #5  0x10059171 in cygperl5_8_2!Perl_vcroak () from /usr/bin/cygperl5_8_2.dll
> #6  0x1005963f in cygperl5_8_2!Perl_croak_nocontext () from /usr/bin/cygperl5_8_2.dll
> [this sequence keeps repeating over and over]
> ###

> Does anybody have an idea what I might be looking at here, and what I
> could do about it?

> Thanks for your help,
> Wolfgang

> [1] from what I know, it might have been core cygwin.dll 1.5-3 to -4
> or perl-5.8.0 to -5.8.2, but that's just me guessing, because
> reverting to the old versions doesn't solve the problem.
> This just proves the saying "Never touch a running system"... :-(
> Current Versions are cygwin-1.5.7-1 and perl-5.8.2-1.

The first sentence at this website is:

"Support for Perl 5.8.0 added in WML 2.0.9"

Maybe it just won't work with perl-5.8.2 yet?

Also the configure script is kind of buggy as it doesn't find the
already installed modules:

> CHECK: Perl Language
> checking for Perl language... /bin/perl v5.008
> checking for Perl module Getopt::Long (2.16)... syntax error at -e line 1, near "require Getopt::Long 2.16"
> Execution of -e aborted due to compilation errors.
> not found

$ perl -e 'use Getopt::Long; print $Getopt::Long::VERSION;'
2.34

[...]

> checking for Perl module IO::File (1.07)... syntax error at -e line 1, near "require IO::File 1.07"
> Execution of -e aborted due to compilation errors.
> not found

$ perl -e 'use IO::File; print $IO::File::VERSION;'
1.10

> checking for Perl module Term::ReadKey (2.11)... syntax error at -e line 1, near "require Term::ReadKey 2.11"
> Execution of -e aborted due to compilation errors.
> not found

$ perl -e 'use Term::ReadKey; print $Term::ReadKey::VERSION;'
2.21

> checking for MakeMaker's private install paths... ok

1 hour later:
I'm still trying to get it configured... it is a terrible package,
I wonder that it was possible to build it under Cygwin;)

When trying to install the modules used by WML I see this:

>   CPAN.pm: Going to build R/RB/RBS/File-PathConvert-0.9.tar.gz
> 
> 
> *** THIS MODULE (File::PathConvert) IS DEPRECATED. ****
> 
> There are several known bugs, and it is not being actively
> maintained since all functionality is now available in
> modules (Cwd.pm and File::Spec) bundled in every Perl
> distribution of recent vintage.  This version is provided to
> fix a few bugs and to get the word out about the
> deprecation.
> 
> Please use Cwd::abs_path() instead of
> File::PathConvert::realpath() and File::Spec methods instead
> of all other path manipulation functions in this module.
> 
> If you use setfstype, you probably want to access a File::Spec::Foo
> module for the appropriate operating system.
> 
> There is also a version of File::Spec on CPAN for backwards
> compatability.
> 
> Thank you,
> 
> Barrie Slaymaker

Ok, now running:
./configure --with-openworld --enable-debug

and getting:
CHECK: Perl Language
checking for Perl language... /bin/perl v5.008
checking for Perl module Getopt::Long (2.16)... found
checking for Perl module Bit::Vector (5.2)... found
checking for Perl module File::PathConvert (ANY)... found
checking for Perl module Image::Size (2.6)... found
checking for Perl module IO::File (1.07)... found
checking for Perl module Term::ReadKey (2.11)... found
checking for MakeMaker's private install paths... ok

FINE;)

runing make ends here:

mp4h: ERROR: failed to initialise modules: unknown error

And running make in the eperl subdirectory gives me an
executable which shows the same symptoms as you described:

Program received signal SIGSEGV, Segmentation fault.
0x1000ad60 in cygperl5_8_2!Perl_malloc () from /bin/cygperl5_8_2.dll

Two of the executables are broken for me now, I consider to stop
working on this now.  Maybe you should ask the upstream maintainer if
it is possible to use WML with perl-5.8.2 or not.  Details about
support is in the top sourcedir SUPPORT file.

Some final words:
Most of Engelschalls software is completely out of date.

Gerrit
-- 
=^..^=

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/