Skip Menu |

This queue is for tickets about the PAR-Packer CPAN distribution.

Report information
The Basics
Id: 59224
Status: resolved
Priority: 0/
Queue: PAR-Packer

People
Owner: RSCHUPP [...] cpan.org
Requestors: Emanuel.Reisinger [...] ils.at
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: make error with version 1.006 on aix 5.3
Date: Fri, 9 Jul 2010 16:00:17 +0200
To: "'bug-PAR-Packer [...] rt.cpan.org'" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] ils.at>
# make [Output truncated] /usr/opt/perl5_32/bin/perl run_with_inc.pl ./par -I../blib/lib -q -B -O../script/parldyn ./par: execution of ./par failed - aborting with -1. BEGIN failed--compilation aborted at -e line 966. make[1]: *** [../script/parldyn] Error 1 make[1]: Leaving directory `/tmp/.cpan/build/PAR-Packer-1.006-mi3hxv/myldr' make: *** [subdirs] Error 2 RSCHUPP/PAR-Packer-1.006.tar.gz /usr/bin/make -- NOT OK ../script/parldyn does not exits, but it does as ../script/parl! After copy of parl to parldyn make passes. And a following make test results in: # make test make[1]: Entering directory `/sys/tools/perl/PAR-Packer-1.006/myldr' perl -e "chmod(oct('0600'), '../blib/lib/PAR/StrippedPARL/Static.pm');" perl encode_append.pl ./static ../blib/lib/PAR/StrippedPARL/Static.pm perl -e "chmod(oct('0444'), '../blib/lib/PAR/StrippedPARL/Static.pm');" perl -e "chmod(oct('0600'), '../blib/lib/PAR/StrippedPARL/Dynamic.pm');" perl encode_append.pl ./par ../blib/lib/PAR/StrippedPARL/Dynamic.pm perl -e "chmod(oct('0444'), '../blib/lib/PAR/StrippedPARL/Dynamic.pm');" make[1]: Leaving directory `/sys/tools/perl/PAR-Packer-1.006/myldr' PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/00-pod.t t/10-parl-generation.t t/20-pp.t t/30-current_exec.t t/40-packer_cd_option.t t/00-pod.t ............... skipped: Set environment variable PERL_TEST_POD=1 to test POD t/10-parl-generation.t ... 10/31 /tmp/parlB0V7: execution of /tmp/parlB0V7 failed - aborting with -1. BEGIN failed--compilation aborted at -e line 966. t/10-parl-generation.t ... 28/31 # Failed test '...Dynamic->write_parl didn't return false' # at t/10-parl-generation.t line 212. # Failed test '...Dynamic->write_parl created non-empty file' # at t/10-parl-generation.t line 216. # Looks like you failed 2 tests of 31. t/10-parl-generation.t ... Dubious, test returned 2 (wstat 512, 0x200) Failed 2/31 subtests t/20-pp.t ................ ok t/30-current_exec.t ...... # Please wait t/30-current_exec.t ...... 2/4 cannot remove directory for /sys/tools/perl/PAR-Packer-1.006/t-tmp/par-root/cache-d6cfbf8681919deb85889e7785d7d6bc78bed21e: File exists at t/30-current_exec.t line 98 cannot remove directory for /sys/tools/perl/PAR-Packer-1.006/t-tmp/par-root: File exists at t/30-current_exec.t line 98 cannot remove directory for /sys/tools/perl/PAR-Packer-1.006/t-tmp: File exists at t/30-current_exec.t line 98 t/30-current_exec.t ...... ok t/40-packer_cd_option.t .. ok Test Summary Report ------------------- t/10-parl-generation.t (Wstat: 512 Tests: 31 Failed: 2) Failed tests: 29, 31 Non-zero exit status: 2 Files=5, Tests=71, 744 wallclock secs ( 0.08 usr 0.02 sys + 418.28 cusr 43.53 csys = 461.91 CPU) Result: FAIL Failed 1/5 test programs. 2/71 subtests failed. make: *** [test_dynamic] Error 255 Our system AIX 5.3: # oslevel -s 5300-10-01-0921 Freundliche Grüße / Best regards Dipl.-Ing. (FH) Emanuel Reisinger Software Engineer ILS Consult GmbH Kompetenz-Center für IT & Logistik-Software www.ils.at<http://www.ils.at> Goethestraße 84 | 4020 Linz | Austria Tel.: +43 (5) 1715 - 1844 Fax: +43 (5) 1715 - 9844 E-Mail: emanuel.reisinger@ils.at Sitz: Linz | LG Linz | FN: 127950m | UID-Nr.: ATU37517004 PART OF IMTECH >> www.imtech.eu<http://www.imtech.eu>

Message body is not shown because it is too large.

On 2010-07-09 10:00:34, Emanuel.Reisinger@ils.at wrote: Show quoted text
> > # make > [Output truncated]
Please post the full output of make, so we can get a clue what's going on here. You might what to change the last line of myldr/run_with_inc.pl beforehand from exit(system(@ARGV) == 0 ? 0 : 1); to system(@ARGV) == 0 or die "system failed: exit=$? error=$!"; so that we can get a bit more diagnostics. Show quoted text
> ../script/parldyn does not exits, but it does as ../script/parl! After > copy of parl to parldyn make passes.
It's useless to continue after the above error. Cheers, Roderich
Subject: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3
Date: Mon, 12 Jul 2010 06:56:58 +0200
To: "'bug-PAR-Packer [...] rt.cpan.org'" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] ils.at>

Message body is not shown because it is too large.

On 2010-07-12 00:57:27, Emanuel.Reisinger@ils.at wrote: This is AIX, right? Sorry, I can't help you there because I don't have access to such a machine. Also, CPAN Testers doesn't have a history of anyone having built PAR::Packer there. Anyway, here are some general remarks: The warnings "ld: 0711-319 WARNING: Exported symbol not defined" for the command Show quoted text
> cc -q32 static.o -bE:/usr/opt/perl5/lib/5.12.1/aix/CORE/perl.exp > -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 > -L/usr/opt/perl5/lib/5.12.1/aix/CORE -lbind -lnsl -ldl -lld -lm > -lcrypt -lc -o ./static
are probably harmless. But that's just a guess, because I don't know the meaning of AIX-specific options like -bE:... Anyway this is a standalone executable that uses only standard C library fucntions. ./par (built 3 commands eralier) is another matter. This is actually a special purpose Perl interpreter. But compiling and linking it seems to have been successful. But it looks like your using a 32bit Perl installation in a 64bit user space? Try debugging ./par, you probably need to rebuild it first with debugging enabled. At least run ./par under a debugger and try to get a stack trace or something. Cheers, Roderich
Subject: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3
Date: Tue, 13 Jul 2010 08:03:39 +0200
To: "'bug-PAR-Packer [...] rt.cpan.org'" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] ils.at>
Yes it's a AIX 5.3 (technical level 10) AIX linker option -bE includes an export file of shared library listing the global symbols. FYI: http://publib.boulder.ibm.com/infocenter/comphelp/v9v111/index.jsp?topic=/com.ibm.xlcpp9.aix.doc/getstart/new_features.htm Yes that's right I'm using a 32bit Perl installation on a 64bit hardware and kernel. But that should doesn't matter. That's a development host and all target hosts may have not a 64bit environment, so I've to use the 32bit version. Here are the debugging information: # dbx par (dbx) stop at 134 [1] stop at "main.c":134 (dbx) run -I../blib/lib -q -B -O../script/parldyn [1] stopped in main at line 134 in file "main.c" ($t1) 134 exitstatus = perl_parse(my_perl, par_xs_init, argc + options_count - 1, fakeargv, (char **)NULL); (dbx) where main(argc = 5, argv = 0x2ff22bdc, env = 0x2ff22bf4), line 134 in "main.c" (dbx) dump main(argc = 5, argv = 0x2ff22bdc, env = 0x2ff22bf4), line 134 in "main.c" argno = 4 exitstatus = -559038737 i = 5 __func__ = "main" (dbx) p my_perl 0x3000fb78 (dbx) p par_xs_init par_xs_init (dbx) p argc 5 (dbx) p options_count 4 (dbx) p fakeargv[0] "par" (dbx) p fakeargv[1] "-e" (dbx) p fakeargv[2] "#!/usr/bin/perl\neval 'exec /usr/bin/perl -S $0 ${1+"$@"}'\n if 0; # not running under some shell\n\npackage __par_pl;\n\n# --- This script must not use any modules at compile time ---\n# use strict;\n\n#line 158\n\nmy ($par_temp, $progname, @tmpfile);\nEND { if ($ENV{PAR_CLEAN}) {\n require File::Temp;\n require File::Basename;\n require File::Spec;\n my $topdir = File::Basename::dirname($par_temp);\n outs(qq{Removing files in "$par_temp"});\n File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp);\n rmdir $par_temp;\n # Don't remove topdir because this causes a race with other apps\n # that are trying to start.\n\n if (-d $par_temp && $^O ne 'MSWin32') {\n # Something went wrong unlinking the temporary directory. This\n # typic [truncated] (dbx) p fakeargv[3] "--" (dbx) p fakeargv[4] "-I../blib/lib" (dbx) p fakeargv[5] "-q" (dbx) p fakeargv[6] "-B" (dbx) p fakeargv[7] "-O../script/parldyn" (dbx) n program terminated by signal 9 (dbx) quit Execution of perl_parse at line 134 of myldr/main.c terminates myldr/par with signal 9. This error occur in perl v5.12.1 and AIX 5.3 default perl package v5.8.2 Here is the make output of perl v5.8.2: cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm cp lib/PAR/StrippedPARL/Dynamic.pm blib/lib/PAR/StrippedPARL/Dynamic.pm cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm cp lib/pp.pm blib/lib/pp.pm cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm cp lib/PAR/StrippedPARL/Static.pm blib/lib/PAR/StrippedPARL/Static.pm make[1]: Entering directory `/tmp/.cpan/build/PAR-Packer-1.006/myldr' perl sha1.c.PL sha1.c cc_r -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -I/usr/opt/p erl5/lib/5.8.2/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O main.c perl ./file2c.pl ../script/par.pl my_par_pl.c load_my_par_pl 0 cc_r -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -I/usr/opt/p erl5/lib/5.8.2/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O my_par_pl.c cc_r main.o my_par_pl.o -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/ 5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/C ORE/perl.exp -brtl -b32 -bmaxdata:0x80000000 /usr/opt/perl5/lib/5.8.2/aix-thread-mu lti/auto/DynaLoader/DynaLoader.a -L/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE -l perl -lbind -lnsl -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW -o ./par perl -e1 perl ./file2c.pl ./par my_par.c load_my_par 0 30000 perl ./file2c.pl /usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/libperl.a my_libperl .c load_my_libperl 0 30000 cc_r -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=16384 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong -I/usr/opt/p erl5/lib/5.8.2/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O static.c cc_r static.o -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/o pt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-t hread-multi/CORE/perl.exp -bE:/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE/perl.ex p -brtl -b32 -bmaxdata:0x80000000 /usr/opt/perl5/lib/5.8.2/aix-thread-multi/auto/Dy naLoader/DynaLoader.a -L/usr/opt/perl5/lib/5.8.2/aix-thread-multi/CORE -lbind -lnsl -ldl -lld -lm -lpthreads -lc_r -lcrypt -lbsd -lPW -o ./static perl -e1 perl parlsig.pl ./static ./par 1 30000 perl run_with_inc.pl ./static -I../blib/lib -q -B -O../script/parl perl -e "chmod(oct('0600'), '../blib/lib/PAR/StrippedPARL/Static.pm');" perl encode_append.pl ./static ../blib/lib/PAR/StrippedPARL/Static.pm perl -e "chmod(oct('0444'), '../blib/lib/PAR/StrippedPARL/Static.pm');" perl run_with_inc.pl ./par -I../blib/lib -q -B -O../script/parldyn make[1]: Leaving directory `/tmp/.cpan/build/PAR-Packer-1.006/myldr' ./par: execution of ./par failed - aborting with -1. BEGIN failed--compilation aborted at -e line 966. system failed: exit=1792 error= at run_with_inc.pl line 6. make[1]: *** [../script/parldyn] Error 7 make: *** [subdirs] Error 2 Directory PAR-Packer-1.006/script includes -rwxr-xr-x 1 2000 2000 29524 Jun 13 19:10 par.pl -rwxr-xr-x 1 root system 3191047 Jul 12 14:16 parl -rwxr-xr-x 1 2000 2000 4413 Jun 13 19:10 parl.pod -rwxr-xr-x 1 2000 2000 63 Jun 13 19:10 pp -rwxr-xr-x 1 2000 2000 28825 Jun 13 19:10 tkpp Cheers, Emanuel Show quoted text
-----Ursprüngliche Nachricht----- Von: RSCHUPP via RT [mailto:bug-PAR-Packer@rt.cpan.org] Gesendet: Montag, 12. Juli 2010 10:06 An: Reisinger Emanuel Betreff: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3 <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 > On 2010-07-12 00:57:27, Emanuel.Reisinger@ils.at wrote: This is AIX, right? Sorry, I can't help you there because I don't have access to such a machine. Also, CPAN Testers doesn't have a history of anyone having built PAR::Packer there. Anyway, here are some general remarks: The warnings "ld: 0711-319 WARNING: Exported symbol not defined" for the command
> cc -q32 static.o -bE:/usr/opt/perl5/lib/5.12.1/aix/CORE/perl.exp > -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 > -L/usr/opt/perl5/lib/5.12.1/aix/CORE -lbind -lnsl -ldl -lld -lm > -lcrypt -lc -o ./static
are probably harmless. But that's just a guess, because I don't know the meaning of AIX-specific options like -bE:... Anyway this is a standalone executable that uses only standard C library fucntions. ./par (built 3 commands eralier) is another matter. This is actually a special purpose Perl interpreter. But compiling and linking it seems to have been successful. But it looks like your using a 32bit Perl installation in a 64bit user space? Try debugging ./par, you probably need to rebuild it first with debugging enabled. At least run ./par under a debugger and try to get a stack trace or something. Cheers, Roderich
On 2010-07-13 02:03:57, Emanuel.Reisinger@ils.at wrote: Show quoted text
> AIX linker option -bE includes an export file of shared library > listing the global symbols.
That's what I guessed. Show quoted text
> (dbx) p fakeargv[7] > "-O../script/parldyn" > (dbx) n > program terminated by signal 9 > (dbx) quit > > Execution of perl_parse at line 134 of myldr/main.c terminates > myldr/par with signal 9.
What a crappy debugger that doesn't show you a stack trace when the debuggee dies from a signal... Anyway, thanks for the effort, but there's no use continuing here, as perl_parse leads into the realm of perl internals, i.e. Black Magic Territory. Cheers, Roderich Cheers, Roderich
From: mailto.ogv [...] gmail.com

Message body is not shown because it is too large.

On 2010-08-04 06:07:10, ogv wrote: Show quoted text
> hi everybody ! > I have this error on my AIX 5.3 machine too. > Here is the output: truss -f par
Thanks for doing this as I don't have access to an AIX machine. Show quoted text
> 508042: execve("par", 0x30021598, 0x30048CF8) Err#7 E2BIG > par: execution of par failed - aborting with -1.
Is there an option to AIX' truss to show the arg list and environment of an execve() call? I'm beginning to suspect that the process environment on AIX is rather small? Can you retry the experiment with an empty environment, e.g. $ env - truss ... ./par (at least that's what I'd do on Linux). Cheers, Roderich
From: mailto.ogv [...] gmail.com
hi! I hope this is what you need. the output: env - truss -f -a -e par Thanks. Чтв Авг 05 07:26:28 2010, RSCHUPP писал: Show quoted text
> On 2010-08-04 06:07:10, ogv wrote:
> > hi everybody ! > > I have this error on my AIX 5.3 machine too. > > Here is the output: truss -f par
> > Thanks for doing this as I don't have access to > an AIX machine. >
> > 508042: execve("par", 0x30021598, 0x30048CF8) Err#7 E2BIG > > par: execution of par failed - aborting with -1.
> > Is there an option to AIX' truss to show the arg list > and environment of an execve() call? I'm beginning to > suspect that the process environment on AIX is rather small? > Can you retry the experiment with an empty environment, e.g. > > $ env - truss ... ./par > > (at least that's what I'd do on Linux). > > Cheers, Roderich
Subject: par.debugge
Download par.debugge
application/octet-stream 21.3k

Message body not shown because it is not plain text.

On 2010-08-05 09:28:05, ogv wrote: Show quoted text
> I hope this is what you need. > the output: env - truss -f -a -e par
Yes, that confirms that the E2BIG for execve() is caused by too large args+env passed to the program. According to IBM docs, AIX 5 has a ridiculous, non-configurable limit of 24K for args. The main culprit here is PAR::Packer: it calls par with one argument that is already 23K long (it's a "perl -e ..." type command). Maybe I can eliminate that, but that's a bit of work and I want to make sure beforehand that this the only reason why PAR::Packer doesn't work on AIX 5. Hence, are you ready for a little experiment? (1) Run "make clean" to start with a clean slate (2) Try to shrink your process enviroment by unsetting all environment variables that are not absolutely necessary (3) Strip non-functional whitespace from script/par.pl (saves ~4K) by running $ perl -i -p -e 's/^\s+// if /^=cut/../^1;/' script/par.pl (4) Save some more environmental bytes by reducing the array ld_path_keys in function par_setup_libpath in myldr/mktmpdir.c like this const char *ld_path_keys[3] = { "LIBPATH", "PATH", "" }; (note the empty string as last element) (5) Now try a normal build $ perl Makefile.PL $ make $ make test Cheers, Roderich
From: mailto.ogv [...] gmail.com
Yes, I have fulfilled all steps 1-5 now build works fine. thanks. Птн Авг 06 06:33:08 2010, RSCHUPP писал: Show quoted text
> On 2010-08-05 09:28:05, ogv wrote:
> > I hope this is what you need. > > the output: env - truss -f -a -e par
> > Yes, that confirms that the E2BIG for execve() is caused > by too large args+env passed to the program. > According to IBM docs, AIX 5 has a ridiculous, non-configurable > limit of 24K for args. > The main culprit here is PAR::Packer: it calls par with one > argument that is already 23K long (it's a "perl -e ..." type > command). Maybe I can eliminate that, but that's a bit of work > and I want to make sure beforehand that this the only reason > why PAR::Packer doesn't work on AIX 5. > Hence, are you ready for a little experiment? > > (1) Run "make clean" to start with a clean slate > (2) Try to shrink your process enviroment by unsetting all > environment variables that are not absolutely necessary > (3) Strip non-functional whitespace from script/par.pl > (saves ~4K) by running > > $ perl -i -p -e 's/^\s+// if /^=cut/../^1;/' script/par.pl > > (4) Save some more environmental bytes by reducing the array > ld_path_keys in function par_setup_libpath in myldr/mktmpdir.c > like this > > const char *ld_path_keys[3] = { > "LIBPATH", "PATH", "" > }; > > (note the empty string as last element) > (5) Now try a normal build > > $ perl Makefile.PL > $ make > $ make test > > Cheers, Roderich
On 2010-08-06 07:40:19, ogv wrote: Show quoted text
> Yes, > I have fulfilled all steps 1-5 > now build works fine. > thanks.
Thanks for testing. I'll leave the bug open for now, so that people can find the workaround until I (or someone else) can find the time to fix it properly by getting rid of the 23K arg to execve() par during bootstrapping. Cheers, Roderich
Subject: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3
Date: Wed, 28 May 2014 09:53:42 +0000
To: "bug-PAR-Packer [...] rt.cpan.org" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] imtech-logistics.com>
Hello Roderich, I've run in the same problem with PAR-Packer-1.018 again. But this time I found another quick-fix for this problem: http://www.nntp.perl.org/group/perl.par/2008/06/msg3615.html ##### QUOTE BEGIN ##### On all AIX versions I tested (4.3 - 5.3) the following compiler error will be seen when running a 'make' for PAR::Packer: ------------ ./par: execution of ./par failed - aborting with -1. BEGIN failed--compilation aborted at -e line 975. make: 1254-004 The error code from the last command is 7. Stop. ------------ A trace of the process showed E2BIG - which means the default AIX setting of ncargs (ARG/ENV list size in 4K byte blocks) is not sufficient for PAR::Packer to function. A possible (quick)fix is to increase ncargs from its default value of 6 by running 'chdev -l sys0 -a ncargs=7', bearing in mind this can only be done on AIX 5L and higher, not AIX 4.3. Can this ncargs requirement really not be avoided by the distribution? It was not a problem during earlier PAR::Packer distributions I built (at least 0.970, possibly 0.976). ##### QUOTE END ##### Maybe you can append this quick-fix to the ticket. Cheers, Emanuel Show quoted text
-----Ursprüngliche Nachricht----- Von: Roderich Schupp via RT [mailto:bug-PAR-Packer@rt.cpan.org] Gesendet: Freitag, 6. August 2010 12:33 An: Reisinger Emanuel Betreff: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3 <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 > On 2010-08-05 09:28:05, ogv wrote:
> I hope this is what you need. > the output: env - truss -f -a -e par
Yes, that confirms that the E2BIG for execve() is caused by too large args+env passed to the program. According to IBM docs, AIX 5 has a ridiculous, non-configurable limit of 24K for args. The main culprit here is PAR::Packer: it calls par with one argument that is already 23K long (it's a "perl -e ..." type command). Maybe I can eliminate that, but that's a bit of work and I want to make sure beforehand that this the only reason why PAR::Packer doesn't work on AIX 5. Hence, are you ready for a little experiment? (1) Run "make clean" to start with a clean slate (2) Try to shrink your process enviroment by unsetting all environment variables that are not absolutely necessary (3) Strip non-functional whitespace from script/par.pl (saves ~4K) by running $ perl -i -p -e 's/^\s+// if /^=cut/../^1;/' script/par.pl (4) Save some more environmental bytes by reducing the array ld_path_keys in function par_setup_libpath in myldr/mktmpdir.c like this const char *ld_path_keys[3] = { "LIBPATH", "PATH", "" }; (note the empty string as last element) (5) Now try a normal build $ perl Makefile.PL $ make $ make test Cheers, Roderich
On 2014-05-28 05:53:59, Emanuel.Reisinger@imtech-logistics.com wrote: Show quoted text
> Can this ncargs requirement really not be avoided by the distribution? > It was not a problem during earlier PAR::Packer distributions I built > (at least 0.970, possibly 0.976).
Well script/par.pl went from 26536 bytes in PAR::Packer 0.970 to 29466 bytes in 1.018. Not much, but apparently enough to hit the limited argv space in AIX. Can you try the patch below which shrinks the infamous fakeargv[2] by about 8k. Cheers, Roderich Index: myldr/par_pl2c.pl =================================================================== --- myldr/par_pl2c.pl (revision 1461) +++ myldr/par_pl2c.pl (working copy) @@ -13,6 +13,8 @@ print "const char *$var =\n"; foreach (split(/\n/, $slurp)) { + s/^\s*|\s*$//g; # strip leading and trailing whitespace + next if /^#|^$/; # skip comment and empty lines s/(["\\])/\\$1/g; # escape quotes and backslashes print qq["$_\\n"\n]; }
Subject: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3
Date: Tue, 3 Jun 2014 10:18:11 +0000
To: "bug-PAR-Packer [...] rt.cpan.org" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] imtech-logistics.com>
I've tried the patch, but I couldn't apply it. ../PAR-Packer-1.018> svn patch par_pl2c.patch Skipped missing target: 'myldr/par_pl2c.pl (working copy)' Summary of conflicts: Skipped paths: 1 So I added the two lines manually and it doesn't worked. BR Emanuel ../PAR-Packer-1.018> lsattr -E -l sys0 -a ncargs ncargs 6 ARG/ENV list size in 4K byte blocks True cpan[10]> clean PAR::Packer Running clean for module 'PAR::Packer' Running make clean make clean already called once cpan[11]> make PAR::Packer Running make for module 'PAR::Packer' RSCHUPP/PAR-Packer-1.018.tar.gz Has already been unwrapped into directory /home/root/.cpan/build/PAR-Packer-1.018-O72JX7 Configuring R/RS/RSCHUPP/PAR-Packer-1.018.tar.gz with Makefile.PL *** You have extra Perl library paths set in your environment. Please note that these paths (set with PERL5LIB or PERLLIB) are not honored by perl when running under taint mode, which may lead to problems. This is a limitation (by design) of Perl, not of PAR::Packer; but some of the problems may manifest here during installation. Checking if your kit is complete... Looks good Prototype mismatch: sub main::prompt: none vs ($;$) at /usr/opt/perl5/lib/5.20.0/ExtUtils/MakeMaker.pm line 221. Generating a Unix-style Makefile Writing Makefile for par Writing MYMETA.yml and MYMETA.json Generating a Unix-style Makefile Writing Makefile for PAR::Packer Writing MYMETA.yml and MYMETA.json RSCHUPP/PAR-Packer-1.018.tar.gz /usr/opt/perl5/bin/perl Makefile.PL -- OK Running make for R/RS/RSCHUPP/PAR-Packer-1.018.tar.gz cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm cp lib/pp.pm blib/lib/pp.pm cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm make[1]: Entering directory '/home/root/.cpan/build/PAR-Packer-1.018-O72JX7/myldr' Makefile:755: warning: overriding recipe for target '.c.o' Makefile:334: warning: ignoring old recipe for target '.c.o' /usr/opt/perl5/bin/perl par_pl2c.pl my_par_pl < ../script/par.pl > my_par_pl.c /usr/opt/perl5/bin/perl sha1.c.PL cc_r -q32 -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/usr/local/include -q32 -D_LARGE_FILES -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O main.c "main.c", line 121.23: 1506-068 (W) Operation between types "char*" and "const char*" is not allowed. cc_r -q32 main.o -bE:/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/perl.exp -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 -L/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -lperl -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -o ./par true /usr/opt/perl5/bin/perl encode_append.pl Dynamic.in ./par Dynamic.pm /usr/opt/perl5/bin/perl ./file2c.pl -c 30000 ./par /usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/libperl.a > boot_embedded_files.c cc_r -q32 -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/usr/local/include -q32 -D_LARGE_FILES -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O boot.c cc_r -q32 boot.o -bE:/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/perl.exp -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 -L/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -o ./boot ld: 0711-319 WARNING: Exported symbol not defined: ASCII_TO_NEED ld: 0711-319 WARNING: Exported symbol not defined: boot_DynaLoader ld: 0711-319 WARNING: Exported symbol not defined: NATIVE_TO_NEED ld: 0711-319 WARNING: Exported symbol not defined: Perl__add_range_to_invlist ld: 0711-319 WARNING: Exported symbol not defined: Perl__core_swash_init ... ... ... ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_nosemi ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_reserved ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_uninit ld: 0711-319 WARNING: Exported symbol not defined: PL_Yes true /usr/opt/perl5/bin/perl encode_append.pl Static.in ./boot Static.pm cp Static.pm ../blib/lib/PAR/StrippedPARL/Static.pm cp Dynamic.pm ../blib/lib/PAR/StrippedPARL/Dynamic.pm /usr/opt/perl5/bin/perl -Mblib=.. run_with_inc.pl ./boot -q -B -Oparl cp parl ../blib/script/parl true ../blib/script/parl /usr/opt/perl5/bin/perl -Mblib=.. run_with_inc.pl ./par -q -B -Oparldyn ./par: execution of ./par failed (errno=-1) BEGIN failed--compilation aborted at -e line 965. system(./par -I../blib/arch -I../blib/lib -I/usr/opt/perl5/lib/site_perl/5.20.0/aix-thread-multi -I/usr/opt/perl5/lib/site_perl/5.20.0 -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi -I/usr/opt/perl5/lib/5.20.0 -I/usr/opt/perl5/lib/site_perl/5.18.2 -I/usr/opt/perl5/lib/site_perl/5.12.2 -I/usr/opt/perl5/lib/site_perl/5.12.1 -I/usr/opt/perl5/lib/site_perl/5.8.8 -I/usr/opt/perl5/lib/site_perl/5.8.2 -I/usr/opt/perl5/lib/site_perl -I. -q -B -Oparldyn) failed: Makefile:801: recipe for target 'parldyn' failed make[1]: *** [parldyn] Error 7 make[1]: Leaving directory '/home/root/.cpan/build/PAR-Packer-1.018-O72JX7/myldr' Makefile:607: recipe for target 'subdirs' failed make: *** [subdirs] Error 2 RSCHUPP/PAR-Packer-1.018.tar.gz /usr/bin/make -- NOT OK Failed during this command: RSCHUPP/PAR-Packer-1.018.tar.gz : make NO ../PAR-Packer-1.018> chdev -l sys0 -a ncargs=7 sys0 changed ../PAR-Packer-1.018> lsattr -E -l sys0 -a ncargs ncargs 7 ARG/ENV list size in 4K byte blocks True ../PAR-Packer-1.018> cpan cpan[1]> clean PAR::Packer Reading '/home/root/.cpan/Metadata' Database was generated on Tue, 03 Jun 2014 04:29:02 GMT Running clean for module 'PAR::Packer' Running make clean ... cpan[2]> make PAR::Packer ... ... Manifying blib/man3/PAR::StrippedPARL::Base.3 Manifying blib/man3/pp.3 RSCHUPP/PAR-Packer-1.018.tar.gz /usr/bin/make -- OK Show quoted text
-----Ursprüngliche Nachricht----- Von: Roderich Schupp via RT [mailto:bug-PAR-Packer@rt.cpan.org] Gesendet: Mittwoch, 28. Mai 2014 16:20 An: Reisinger Emanuel Betreff: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3 <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 > On 2014-05-28 05:53:59, Emanuel.Reisinger@imtech-logistics.com wrote:
> Can this ncargs requirement really not be avoided by the distribution? > It was not a problem during earlier PAR::Packer distributions I built > (at least 0.970, possibly 0.976).
Well script/par.pl went from 26536 bytes in PAR::Packer 0.970 to 29466 bytes in 1.018. Not much, but apparently enough to hit the limited argv space in AIX. Can you try the patch below which shrinks the infamous fakeargv[2] by about 8k. Cheers, Roderich Index: myldr/par_pl2c.pl =================================================================== --- myldr/par_pl2c.pl (revision 1461) +++ myldr/par_pl2c.pl (working copy) @@ -13,6 +13,8 @@ print "const char *$var =\n"; foreach (split(/\n/, $slurp)) { + s/^\s*|\s*$//g; # strip leading and trailing whitespace + next if /^#|^$/; # skip comment and empty lines s/(["\\])/\\$1/g; # escape quotes and backslashes print qq["$_\\n"\n]; }
Subject: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3
Date: Tue, 3 Jun 2014 10:31:07 +0000
To: "bug-PAR-Packer [...] rt.cpan.org" <bug-PAR-Packer [...] rt.cpan.org>
From: Reisinger Emanuel <Emanuel.Reisinger [...] imtech-logistics.com>
Sorry, forget my last mail. Your patch worked with sys0 ncargs=6 on AIX! I've applied the patch in the wrong .cpan/build/PAR-Packer-1.018-XYZ directory. BR Emanuel Show quoted text
-----Ursprüngliche Nachricht----- Von: Reisinger Emanuel via RT [mailto:bug-PAR-Packer@rt.cpan.org] Gesendet: Dienstag, 3. Juni 2014 12:18 An: Reisinger Emanuel Betreff: AW: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3 <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 > I've tried the patch, but I couldn't apply it. ../PAR-Packer-1.018> svn patch par_pl2c.patch Skipped missing target: 'myldr/par_pl2c.pl (working copy)' Summary of conflicts: Skipped paths: 1 So I added the two lines manually and it doesn't worked. BR Emanuel ../PAR-Packer-1.018> lsattr -E -l sys0 -a ncargs ncargs 6 ARG/ENV list size in 4K byte blocks True cpan[10]> clean PAR::Packer Running clean for module 'PAR::Packer' Running make clean make clean already called once cpan[11]> make PAR::Packer Running make for module 'PAR::Packer' RSCHUPP/PAR-Packer-1.018.tar.gz Has already been unwrapped into directory /home/root/.cpan/build/PAR-Packer-1.018-O72JX7 Configuring R/RS/RSCHUPP/PAR-Packer-1.018.tar.gz with Makefile.PL *** You have extra Perl library paths set in your environment. Please note that these paths (set with PERL5LIB or PERLLIB) are not honored by perl when running under taint mode, which may lead to problems. This is a limitation (by design) of Perl, not of PAR::Packer; but some of the problems may manifest here during installation. Checking if your kit is complete... Looks good Prototype mismatch: sub main::prompt: none vs ($;$) at /usr/opt/perl5/lib/5.20.0/ExtUtils/MakeMaker.pm line 221. Generating a Unix-style Makefile Writing Makefile for par Writing MYMETA.yml and MYMETA.json Generating a Unix-style Makefile Writing Makefile for PAR::Packer Writing MYMETA.yml and MYMETA.json RSCHUPP/PAR-Packer-1.018.tar.gz /usr/opt/perl5/bin/perl Makefile.PL -- OK Running make for R/RS/RSCHUPP/PAR-Packer-1.018.tar.gz cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm cp lib/pp.pm blib/lib/pp.pm cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm make[1]: Entering directory '/home/root/.cpan/build/PAR-Packer-1.018-O72JX7/myldr' Makefile:755: warning: overriding recipe for target '.c.o' Makefile:334: warning: ignoring old recipe for target '.c.o' /usr/opt/perl5/bin/perl par_pl2c.pl my_par_pl < ../script/par.pl > my_par_pl.c /usr/opt/perl5/bin/perl sha1.c.PL cc_r -q32 -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/usr/local/include -q32 -D_LARGE_FILES -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O main.c "main.c", line 121.23: 1506-068 (W) Operation between types "char*" and "const char*" is not allowed. cc_r -q32 main.o -bE:/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/perl.exp -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 -L/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -lperl -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -o ./par true /usr/opt/perl5/bin/perl encode_append.pl Dynamic.in ./par Dynamic.pm /usr/opt/perl5/bin/perl ./file2c.pl -c 30000 ./par /usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/libperl.a > boot_embedded_files.c cc_r -q32 -c -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/usr/local/include -q32 -D_LARGE_FILES -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -DPARL_EXE=\"parl\" -O boot.c cc_r -q32 boot.o -bE:/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE/perl.exp -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000 -L/usr/opt/perl5/lib/5.20.0/aix-thread-multi/CORE -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc -o ./boot ld: 0711-319 WARNING: Exported symbol not defined: ASCII_TO_NEED ld: 0711-319 WARNING: Exported symbol not defined: boot_DynaLoader ld: 0711-319 WARNING: Exported symbol not defined: NATIVE_TO_NEED ld: 0711-319 WARNING: Exported symbol not defined: Perl__add_range_to_invlist ld: 0711-319 WARNING: Exported symbol not defined: Perl__core_swash_init ... ... ... ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_nosemi ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_reserved ld: 0711-319 WARNING: Exported symbol not defined: PL_warn_uninit ld: 0711-319 WARNING: Exported symbol not defined: PL_Yes true /usr/opt/perl5/bin/perl encode_append.pl Static.in ./boot Static.pm cp Static.pm ../blib/lib/PAR/StrippedPARL/Static.pm cp Dynamic.pm ../blib/lib/PAR/StrippedPARL/Dynamic.pm /usr/opt/perl5/bin/perl -Mblib=.. run_with_inc.pl ./boot -q -B -Oparl cp parl ../blib/script/parl true ../blib/script/parl /usr/opt/perl5/bin/perl -Mblib=.. run_with_inc.pl ./par -q -B -Oparldyn ./par: execution of ./par failed (errno=-1) BEGIN failed--compilation aborted at -e line 965. system(./par -I../blib/arch -I../blib/lib -I/usr/opt/perl5/lib/site_perl/5.20.0/aix-thread-multi -I/usr/opt/perl5/lib/site_perl/5.20.0 -I/usr/opt/perl5/lib/5.20.0/aix-thread-multi -I/usr/opt/perl5/lib/5.20.0 -I/usr/opt/perl5/lib/site_perl/5.18.2 -I/usr/opt/perl5/lib/site_perl/5.12.2 -I/usr/opt/perl5/lib/site_perl/5.12.1 -I/usr/opt/perl5/lib/site_perl/5.8.8 -I/usr/opt/perl5/lib/site_perl/5.8.2 -I/usr/opt/perl5/lib/site_perl -I. -q -B -Oparldyn) failed: Makefile:801: recipe for target 'parldyn' failed make[1]: *** [parldyn] Error 7 make[1]: Leaving directory '/home/root/.cpan/build/PAR-Packer-1.018-O72JX7/myldr' Makefile:607: recipe for target 'subdirs' failed make: *** [subdirs] Error 2 RSCHUPP/PAR-Packer-1.018.tar.gz /usr/bin/make -- NOT OK Failed during this command: RSCHUPP/PAR-Packer-1.018.tar.gz : make NO ../PAR-Packer-1.018> chdev -l sys0 -a ncargs=7 sys0 changed ../PAR-Packer-1.018> lsattr -E -l sys0 -a ncargs ncargs 7 ARG/ENV list size in 4K byte blocks True ../PAR-Packer-1.018> cpan cpan[1]> clean PAR::Packer Reading '/home/root/.cpan/Metadata' Database was generated on Tue, 03 Jun 2014 04:29:02 GMT Running clean for module 'PAR::Packer' Running make clean ... cpan[2]> make PAR::Packer ... ... Manifying blib/man3/PAR::StrippedPARL::Base.3 Manifying blib/man3/pp.3 RSCHUPP/PAR-Packer-1.018.tar.gz /usr/bin/make -- OK
-----Ursprüngliche Nachricht----- Von: Roderich Schupp via RT [mailto:bug-PAR-Packer@rt.cpan.org] Gesendet: Mittwoch, 28. Mai 2014 16:20 An: Reisinger Emanuel Betreff: [rt.cpan.org #59224] make error with version 1.006 on aix 5.3 <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 > On 2014-05-28 05:53:59, Emanuel.Reisinger@imtech-logistics.com wrote:
> Can this ncargs requirement really not be avoided by the distribution? > It was not a problem during earlier PAR::Packer distributions I built > (at least 0.970, possibly 0.976).
Well script/par.pl went from 26536 bytes in PAR::Packer 0.970 to 29466 bytes in 1.018. Not much, but apparently enough to hit the limited argv space in AIX. Can you try the patch below which shrinks the infamous fakeargv[2] by about 8k. Cheers, Roderich Index: myldr/par_pl2c.pl =================================================================== --- myldr/par_pl2c.pl (revision 1461) +++ myldr/par_pl2c.pl (working copy) @@ -13,6 +13,8 @@ print "const char *$var =\n"; foreach (split(/\n/, $slurp)) { + s/^\s*|\s*$//g; # strip leading and trailing whitespace + next if /^#|^$/; # skip comment and empty lines s/(["\\])/\\$1/g; # escape quotes and backslashes print qq["$_\\n"\n]; }
On 2014-06-03 06:31:33, Emanuel.Reisinger@imtech-logistics.com wrote: Show quoted text
> Sorry, forget my last mail. Your patch worked with sys0 ncargs=6 on > AIX!
Good news :) I've committed the above patch, will be in the next release of PAR::Packer. Thanks for testing. Cheers, Roderich