Skip Menu |

This queue is for tickets about the re-engine-Plan9 CPAN distribution.

Report information
The Basics
Id: 28044
Status: open
Priority: 0/
Queue: re-engine-Plan9

People
Owner: Nobody in particular
Requestors: CHORNY [...] cpan.org
Cc:
AdminCc:

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



Subject: bad command
perl 5.9.5 patch 31537, Win32, gcc, dmake Windows cannot execute command (cd libfmt; dmake) generated from (cd libfmt; $(MAKE)) -- Alexandr Ciornii, http://chorny.net
On Sun Jul 08 09:37:57 2007, CHORNY wrote: Show quoted text
> perl 5.9.5 patch 31537, Win32, gcc, dmake > > Windows cannot execute command > (cd libfmt; dmake) > generated from > (cd libfmt; $(MAKE))
Even if that part did work I suspect it doesn't build on windows. Could you try running the dmake command inside libfmt, libutf and libregexp and tell me whether it fails horribly (as I suspect). Using the Plan 9 build system at all was never a recipe for portability. I'll probably just rewrite its make system in perl (like re::engine::PCRE).
On Tue Jul 10 22:41:53 2007, AVAR wrote: Show quoted text
> I'll probably just rewrite its make system in perl (like
re::engine::PCRE). I've rewritten the build system and made a new release (0.11). It should now build everywhere perl builds and where the plan9 source itself doesn't trigger some odd C errors. Resolving the bug, but could you try it on windows and tell me if it works please?
From: CHORNY [...] cpan.org
On Jul 11 22:56:01 2007, AVAR wrote: Show quoted text
> Resolving the bug, but could you try it on windows and tell me if it > works please?
Running Mkbootstrap for libutf () C:\perl\bin\perl.exe -MExtUtils::Command -e chmod 644 libutf.bs C:\perl\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"libutf\", 'DLBASE' => 'libutf', 'DL_FUNCS' => { } , 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def libutf.def --output-exp dll.exp g++ -o ..\blib\arch\auto\libutf\libutf.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"c:\perl\lib\CORE" -L"C:\MinGW\lib" rune.o runestrcat.o runestrchr.o runestrcmp.o runestrcpy.o runestrdup.o runestrecpy.o runestrlen.o runestrncat.o runestrncmp.o runestrncpy.o runestrrchr.o runestrstr.o runetype.o utfecpy.o utflen.o utfnlen.o utfrrune.o utfrune.o utfutf.o -Wl,--image-base,0x180f0000 C:\perl\lib\CORE\libperl59.a -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 dll.exp dll.exp:fake:(.edata+0x34): undefined reference to `boot_libutf' dll.exp:fake:(.edata+0x38): undefined reference to `boot_libutf' collect2: ld returned 1 exit status dmake: Error code 129, while making '..\blib\arch\auto\libutf\libutf.dll' -- Alexandr Ciornii, http://chorny.net
On Thu Jul 12 05:24:37 2007, CHORNY wrote: Show quoted text
> On Jul 11 22:56:01 2007, AVAR wrote: >
> > Resolving the bug, but could you try it on windows and tell me if it > > works please?
> > > Running Mkbootstrap for libutf () > C:\perl\bin\perl.exe -MExtUtils::Command -e chmod 644 libutf.bs > C:\perl\bin\perl.exe -MExtUtils::Mksymlists \ > -e "Mksymlists('NAME'=>\"libutf\", 'DLBASE' => 'libutf', 'DL_FUNCS' > => { } > , 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" > dlltool --def libutf.def --output-exp dll.exp > g++ -o ..\blib\arch\auto\libutf\libutf.dll -Wl,--base-file -Wl,dll.base > -mdll -s -L"c:\perl\lib\CORE" -L"C:\MinGW\lib" rune.o runestrcat.o > runestrchr.o runestrcmp.o runestrcpy.o runestrdup.o runestrecpy.o > runestrlen.o runestrncat.o runestrncmp.o runestrncpy.o runestrrchr.o > runestrstr.o runetype.o utfecpy.o utflen.o utfnlen.o utfrrune.o > utfrune.o utfutf.o -Wl,--image-base,0x180f0000 > C:\perl\lib\CORE\libperl59.a -lmsvcrt -lmoldname -lkernel32 -luser32 > -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 > -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 > dll.exp > dll.exp:fake:(.edata+0x34): undefined reference to `boot_libutf' > dll.exp:fake:(.edata+0x38): undefined reference to `boot_libutf' > collect2: ld returned 1 exit status > dmake: Error code 129, while making '..\blib\arch\auto\libutf\libutf.dll'
0.13 does not try to build dynamic libs in the lib* directories, please try it and see if it works.
From: CHORNY [...] cpan.org
On Jul 16 14:48:23 2007, AVAR wrote: Show quoted text
> 0.13 does not try to build dynamic libs in the lib* directories, please > try it and see if it works.
Running Mkbootstrap for re::engine::Plan9 () C:\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e chmod 644 Plan9.bs C:\perl\bin\perl.exe "-Iinc" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"re::engine::Plan9\", 'DLBASE' => 'Plan9', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def Plan9.def --output-exp dll.exp g++ -o blib\arch\auto\re\engine\Plan9\Plan9.dll -Wl,--base-file -Wl,dll.base -shared lib*/*.o Plan9.o -Wl,--image-base,0x69420000 C:\perl\lib\CORE\libperl59.a -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 dll.exp g++: lib*/*.o: Invalid argument -- Alexandr Ciornii, http://chorny.net
On Tue Jul 17 05:22:03 2007, CHORNY wrote: Show quoted text
> On Jul 16 14:48:23 2007, AVAR wrote: >
> > 0.13 does not try to build dynamic libs in the lib* directories, please > > try it and see if it works.
> > Running Mkbootstrap for re::engine::Plan9 () > C:\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e chmod 644 Plan9.bs > C:\perl\bin\perl.exe "-Iinc" -MExtUtils::Mksymlists \ > -e "Mksymlists('NAME'=>\"re::engine::Plan9\", 'DLBASE' => 'Plan9', > 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' =>
[]);" Show quoted text
> dlltool --def Plan9.def --output-exp dll.exp > g++ -o blib\arch\auto\re\engine\Plan9\Plan9.dll -Wl,--base-file > -Wl,dll.base -shared lib*/*.o Plan9.o -Wl,--image-base,0x69420000 > C:\perl\lib\CORE\libperl59.a -lmsvcrt -lmoldname -lkernel32 -luser32 > -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 > -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 > dll.exp > g++: lib*/*.o: Invalid argument >
Please try 0.14, it builds the list of .o files manually instead of relying on the shell.
From: CHORNY [...] cpan.org
On Jul 17 07:48:11 2007, AVAR wrote: Show quoted text
> Please try 0.14, it builds the list of .o files manually instead of > relying on the shell.
perl is terminated by Windows in each failed test t/00-compile......ok t/capture.........ok 1/0Free to wrong pool 3d57d8 not 208012b. t/capture.........dubious Test returned status 5 (wstat 1280, 0x500) after all the subtests completed successfully t/flags...........Free to wrong pool 3d57d8 not 1080123. t/flags...........dubious Test returned status 5 (wstat 1280, 0x500) after all the subtests completed successfully t/import..........ok t/match...........Free to wrong pool 3d57d8 not 108012d. t/match...........dubious Test returned status 5 (wstat 1280, 0x500) after all the subtests completed successfully t/pathological....ok t/qr..............Free to wrong pool 3d57d0 not 20c0117. t/qr..............dubious Test returned status 5 (wstat 1280, 0x500) after all the subtests completed successfully ... More detailed: t/capture....ok 1 ok 2 ok 3 - $& ok 4 - $1 = a ok 5 - $2 = o ok 6 - $3 = e ok 7 - $4 = u ok 8 - $5 = 420 ok 9 - $6 = undef Free to wrong pool 3d28a0 not 2080161. ok 10 - $640 = undef ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 1..20 dubious -- Alexandr Ciornii, http://chorny.net
On Tue Jul 17 13:41:44 2007, CHORNY wrote: Show quoted text
> On Jul 17 07:48:11 2007, AVAR wrote: >
> > Please try 0.14, it builds the list of .o files manually instead of > > relying on the shell.
> > perl is terminated by Windows in each failed test > > t/00-compile......ok > t/capture.........ok 1/0Free to wrong pool 3d57d8 not 208012b. > t/capture.........dubious > Test returned status 5 (wstat 1280, 0x500) > after all the subtests completed successfully > t/flags...........Free to wrong pool 3d57d8 not 1080123. > t/flags...........dubious > Test returned status 5 (wstat 1280, 0x500) > after all the subtests completed successfully > t/import..........ok > t/match...........Free to wrong pool 3d57d8 not 108012d. > t/match...........dubious > Test returned status 5 (wstat 1280, 0x500) > after all the subtests completed successfully > t/pathological....ok > t/qr..............Free to wrong pool 3d57d0 not 20c0117. > t/qr..............dubious > Test returned status 5 (wstat 1280, 0x500) > after all the subtests completed successfully > > ... > > More detailed: > t/capture....ok 1 > ok 2 > ok 3 - $& > ok 4 - $1 = a > ok 5 - $2 = o > ok 6 - $3 = e > ok 7 - $4 = u > ok 8 - $5 = 420 > ok 9 - $6 = undef > Free to wrong pool 3d28a0 not 2080161. > ok 10 - $640 = undef > ok 11 > ok 12 > ok 13 > ok 14 > ok 15 > ok 16 > ok 17 > ok 18 > ok 19 > ok 20 > 1..20 > dubious
"Free to wrong pool" as far as I can tell is a win32 error that occurs when memory allocated by one thread is freed by another. The memory I'm allocating is either freed in the thread in which it was allocated with malloc, copied (before?) a new thread is made and then freed. Presumably the issue related to regcomp (in Plan9_comp) -> Copy (in Plan9_dupe) -> free (in Plan9_free). But without a windows box to debug this on I can't tell for sure. So basically this isn't going to be solved unless someone with win-fu comes along;/