Skip Menu |

This queue is for tickets about the Coro CPAN distribution.

Report information
The Basics
Id: 28972
Status: rejected
Priority: 0/
Queue: Coro

People
Owner: Nobody in particular
Requestors: Ulrich.Reimuth [...] iz.bwl.de
Cc:
AdminCc:

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



Subject: Bug Coro-3.63 Win32 5.0 Perl - 5.8.7 State.c State.xs(643) : warning C4013: 'PerlProc_"longjmp' undefiniert; Annahme: extern mit Rückgabe"typ int
Date: Fri, 24 Aug 2007 14:12:46 +0200
To: <bug-Coro [...] rt.cpan.org.>
From: "Reimuth, Ulrich (IZLBW)" <Ulrich.Reimuth [...] iz.bwl.de>
D:\CPAN_change_2_ppd\Coro-3.63>perl Makefile.PL Event version 1.09 found, building Event support. Checking if your kit is complete... Looks good Warning: prerequisite IO::AIO 2.3 not found. *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Coro has a number of configuration options. Due to its maturity, the defaults that Coro chooses are usually fine, so you can decide to skip these questions. Only if something went wrong you should select 'n' here and manually configure Coro, and, of course, report this to the maintainer :) Skip further questions and use defaults (y/n)? [y] *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Coro can use a number of methods to implement coroutines at the C level. The default chosen is based on your current confguration and is correct in most cases, but you still can chose between these alternatives: u The unix 'ucontext.h' functions are relatively new and not implemented or well-tested in older unices. They allow very fast coroutine creation and reasonably fast switching, and, most importantly, are very stable. It is, however, usually slower than the other alternatives due to an extra syscall done by swapcontext. s If the ucontext functions are not working or you don't want to use them for other reasons you can try a workaround using setjmp/longjmp/sigaltstack (also standard unix functions). Coroutine creation is rather slow, but switching is very fast (often much faster than with the ucontext functions). Unfortunately, glibc-2.1 and below don't even feature a working sigaltstack. You cannot use this implementation if some other code uses SIGUSR2 or you plan to create coroutines from an alternative signal stack, as both are being used for coroutine creation. a Handcoded assembly. This is the fastest method with the least side effects, if it works, that is. It has been tested on GNU/Linux x86 and x86_64 systems and should work on all x86/x86_64 systems using the SVR ELF ABI. l GNU/Linux. Very old GNU/Linux systems (glibc-2.1 and below) need this hack. Since it is very linux-specific it is also quite fast and recommended even for newer versions; when it works, that is (currently x86 and a few others only. If it compiles, it's usually ok). Newer glibc versions (>= 2.5) stop working with this implementation again. i IRIX. For some reason, SGI really does not like to follow the single unix specification (does that surprise you?), so this workaround might be needed (it's fast), although [s] and [u] should also work now. w Microsoft Windows. Try this on Microsoft Windows, although, as there is no standard on how to do this under windows, this might work only on cygwin or specific versions of msvc. Your problem, your fix, our patch. For most systems, the default chosen should be OK. If you experience problems then you should experiment with this setting and/or turn off optimizations (make OPTIMIZE=-O0). Use which implementation, <s>et/longjump, <u>context, <a>ssembly, <i>rix, <l>inux or <w>indows? [w] w Using windows-specific implementation *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Per-context stack size factor: Depending on your settings, Coro tries to share the C stack as much as possible, but sometimes it needs to allocate a new one. This setting controls the maximum size that gets allocated, and should not be set too high, as memory and address space still is wasted even if it's not fully used. The value entered will be multiplied by sizeof(long), which is usually 4 on 32-bit systems, and 8 on 64-bit systems. A setting of 16384 (the default) therefore corresponds to a 64k..128k stack, which usually is ample space (you might even want to try 8192 or lower if your program creates many coroutines). On systems supporting mmap and dynamic memory management, the actual memory usually gets allocated on demand, but with many large stacks you can still run out of address space on your typical 32 bit platform. Some perls (mostly threaded ones and perl compiled under linux 2.6) and some programs (inefficient regexes can use a lot of stack space) may need much, much more: If Coro segfaults with weird backtraces (e.g. in a function prologue) or in t/10_bugs.t, you might want to increase this to 65536 or more. The default should be fine, and can be changed at runtime with Coro::State::cctx_stacksize. C stack size factor? [16384] 16384 using a stacksize of 16384 * sizeof(long) *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Coro can optionally put a guard area before each stack segment. When the stack is too small and the access is not too far outside the stack (i.e. within the guard area), then the program will safely segfault instead of running into other data. The cost is some additional overhead with is usually negligible, and extra use of address space. The guard area size currently needs to be specified in pages (typical pagesizes are 4k and 8k). The guard area is only enabled on a few hardcoded architectures and is ignored on others. The actual preprocessor expression disables this feature if: !__i386 && !__x86_64 && !__powerpc && !__m68k && !__alpha && !__mips && !__sparc64 The default, as usual, should be just fine. Number of guard pages (0 disables)? [4] 4 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Coro can tell valgrind about its stacks and so reduce spurious warnings where valgrind would otherwise complain about possible stack switches. Enabling this does not incur visible runtime or memory overhead, but it requires that you have the <valgrind/valgrind.h> header file available. Valgrind support is completely optional, so the default of disabling it is the safe choice. Enable valgrind support (y/n)? [n] n *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Coro can use (or even trick) some perl functions into doing what it needs instead of relying on (some) of its own functions. This might increase chances that it compiles and works, but it could just as well result in memory leaks, crashes or silent data corruption. It certainly does result in slightly slower speed and higher memory consumption, though, so you should enable it only as a last resort. Prefer perl functions over coro functions (y/n)? [n] n *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Writing Makefile for Coro::State Writing Makefile for Coro::Event Writing Makefile for Coro D:\CPAN_change_2_ppd\Coro-3.63> D:\CPAN_change_2_ppd\Coro-3.63>nmake Microsoft (R) Program Maintenance Utility, Version 7.10.3077 Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. cp Coro/Select.pm blib\lib/Coro/Select.pm cp Coro/State.pm blib\lib/Coro/State.pm cp Coro/RWLock.pm blib\lib/Coro/RWLock.pm cp Coro/LWP.pm blib\lib/Coro/LWP.pm cp Coro/Semaphore.pm blib\lib/Coro/Semaphore.pm cp Coro/Timer.pm blib\lib/Coro/Timer.pm cp Coro/CoroAPI.h blib\lib/Coro/CoroAPI.h cp Coro.pm blib\lib/Coro.pm cp Coro/Signal.pm blib\lib/Coro/Signal.pm cp Coro/SemaphoreSet.pm blib\lib/Coro/SemaphoreSet.pm cp Coro/Storable.pm blib\lib/Coro/Storable.pm cp Coro/Util.pm blib\lib/Coro/Util.pm cp Coro/AIO.pm blib\lib/Coro/AIO.pm cp Coro/Handle.pm blib\lib/Coro/Handle.pm cp Coro/Specific.pm blib\lib/Coro/Specific.pm cp Coro/Socket.pm blib\lib/Coro/Socket.pm cp Coro/Channel.pm blib\lib/Coro/Channel.pm cp Coro/MakeMaker.pm blib\lib/Coro/MakeMaker.pm Skip ..\blib\lib\Coro\Util.pm (unchanged) Skip ..\blib\lib\Coro\Channel.pm (unchanged) Skip ..\blib\lib\Coro\Specific.pm (unchanged) Skip ..\blib\lib\Coro\LWP.pm (unchanged) Skip ..\blib\lib\Coro\SemaphoreSet.pm (unchanged) Skip ..\blib\lib\Coro\MakeMaker.pm (unchanged) Skip ..\blib\lib\Coro\Semaphore.pm (unchanged) Skip ..\blib\lib\Coro\AIO.pm (unchanged) Skip ..\blib\lib\Coro\Timer.pm (unchanged) Skip ..\blib\lib\Coro\Socket.pm (unchanged) Skip ..\blib\lib\Coro\State.pm (unchanged) Skip ..\blib\lib\Coro\RWLock.pm (unchanged) Skip ..\blib\lib\Coro\Signal.pm (unchanged) Skip ..\blib\lib\Coro\Handle.pm (unchanged) Skip ..\blib\lib\Coro\Select.pm (unchanged) Skip ..\blib\lib\Coro\Storable.pm (unchanged) C:\Programme\ActivePerl\587_815\bin\perl.exe C:\Programme\ActivePerl\587_815\lib\ExtUtils/xsubpp -typemap C:\Programme\ActivePerl\5 87_815\lib\ExtUtils\typemap -typemap typemap State.xs > State.xsc && C:\Programme\ActivePerl\587_815\bin\perl.exe -MExtUtils::Command -e mv State.xsc State.c cl -c -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -D PERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -MD -Zi -DNDEBUG -O1 -DVERSION=\"3.0\" -DXS_VERSION=\"3.0\" "-IC:\Programme\ActivePerl\587_815\lib\CORE" -DCORO_LOSER -DCORO_STACKSIZE=16384 -DCORO_STACKGUARD=4 State.c State.c State.xs(643) : warning C4013: 'PerlProc_longjmp' undefiniert; Annahme: extern mit Rückgabetyp int State.xs(681) : error C2065: 'my_perl': nichtdeklarierter Bezeichner State.xs(681) : warning C4047: 'Funktion': Anzahl der Dereferenzierungen bei 'PerlInterpreter *' und 'int' unterschiedlich State.xs(681) : warning C4047: 'Funktion': Anzahl der Dereferenzierungen bei 'PerlInterpreter *' und 'int' unterschiedlich State.xs(839) : warning C4003: Nicht genügend übergebene Parameter für das Makro 'PerlProc_setjmp' State.xs(839) : warning C4013: 'PerlProc_setjmp' undefiniert; Annahme: extern mit Rückgabetyp int NMAKE : fatal error U1077: 'cl': R³ckgabe-Code '0x2' Stop. NMAKE : fatal error U1077: 'cd': R³ckgabe-Code '0x2' Stop. D:\CPAN_change_2_ppd\Coro-3.63> Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES USE_SITECUSTOMIZE PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS Locally applied patches: ActivePerl Build 815 [211909] Iin_load_module moved for compatibility with build 806 PerlEx support in CGI::Carp Less verbose ExtUtils::Install and Pod::Find instmodsh upgraded from ExtUtils-MakeMaker-6.25 Patch for CAN-2005-0448 from Debian with modifications Upgrade to Time-HiRes-1.76 25774 Keys of %INC always use forward slashes 25747 Accidental interpolation of $@ in Pod::Html 25362 File::Path::mkpath resets errno 25181 Incorrect (X)HTML generated by Pod::Html 24999 Avoid redefinition warning for MinGW 24699 ICMP_UNREACHABLE handling in Net::Ping 21540 Fix backward-compatibility issues in if.pm Built under MSWin32 Compiled at Nov 2 2005 08:44:52 %ENV: PERL5LIB="C:\Programme\ActivePerl\Perl_DevKit_6.0\lib\" PERLDB_OPTS="RemotePort=127.0.0.1:2000" @INC: C:\Programme\ActivePerl\Perl_DevKit_6.0\lib\ C:/Programme/ActivePerl/587_815/lib C:/Programme/ActivePerl/587_815/site/lib . D:\CPAN_change_2_ppd\Coro-3.63>uname -a Windows NT symonadm04 5.0 Build 2195 (Service Pack 4) x86 D:\CPAN_change_2_ppd\Coro-3.63>

Message body is not shown because it is too large.

CC: undisclosed-recipients: ;
Subject: Re: [rt.cpan.org #28972] Bug Coro-3.63 Win32 5.0 Perl - 5.8.7 State.c State.xs(643) : warning C4013: 'PerlProc_"longjmp"' undefiniert; Annahme: extern mit Rückgabe"ty"p int
Date: Fri, 7 Sep 2007 12:51:49 +0200
To: "Reimuth, Ulrich (IZLBW) via RT" <bug-Coro [...] rt.cpan.org>
From: Marc Lehmann <schmorp [...] schmorp.de>
Hi, your report will be ignored when sent to rt.cpan.org and not the official contact address mentioned in the module documentation. Please close your report again and use the contact address from the module documentation to report any issues. If this is an inconvenience to you please consider petitioning the rt.cpan.org authors to make their service optional and not enforced, so this inconvenience can be avoided in the future. Thanks a lot, Marc Lehmann <schmorp@schmorp.de>
this is a bug in your perl