Hi, Alan!  What kind of CPU do you have?  If you have an AMD Athlon XP
(or something of similar lineage), I think I know what the problem is.


On Thu, 24 Jan 2008 12:52:35 -0800
Alan Rocker (via RT) <[EMAIL PROTECTED]> wrote:

> Determining if your platform supports GMP...Can't spawn ".\test.exe":
> Bad file descriptor at lib/Parrot/Configure/Utils.pm line 85.
> ............................no.
> 
> (Windows wanted to 'phone home about test.exe too.)

Yeah, I get that on Strawberry Perl too.  It surprised me, and it
pauses the configure process until you click "Don't send report".


> Might there be some obscure connection with
> [perl #41508] [BUG] Configure losing flags... ?

Nah, I think the test app just broke for whatever reason.  The mingw32
environment packaged with Strawberry Perl does include a libgmp.a and
libgmp.la, so the test app was built properly, but failed to run.

I reproduced it by copying config/auto/gmp/gmp.in to gmp.c, and
compiling with:

> gcc -O2 -Wall -g -ggdb -o gmp.exe gmp.c -lgmp

The resulting gmp.exe crashes and Windows prompts if I want to send an
error report to microsoft.com.

I poked around a bit with gdb, and discovered its barfing on an SSE2
instruction ("pmuludq") in libgmp.a (at __gmpn_divrem_1+266), which my
CPU (an athlon XP) can't handle.  So I'm going to ask the Strawberry
Perl guy about this.

For the record, here's what GDB says:

Program received signal SIGILL, Illegal instruction.
0x00405aaa in __gmpn_divrem_1 ()
(gdb) bt
#0  0x00405aaa in __gmpn_divrem_1 ()
#1  0x00401ae8 in mpn_sb_get_str ()
#2  0x00000001 in ?? ()
#3  0x003d2680 in ?? ()
#4  0x0022fc1b in ?? ()
#5  0x00000011 in ?? ()
#6  0x12e0be82 in ?? ()
#7  0x00000002 in ?? ()
#8  0x003d0000 in ?? ()
#9  0x40000161 in ?? ()
#10 0x7c91056d in ntdll!RtlFreeThreadActivationContextStack ()
   from C:\WINDOWS\system32\ntdll.dll
#11 0x00000000 in ?? ()

And the relevant disassembly:
0x00405aa4 <__gmpn_divrem_1+260>:       paddd  %mm0,%mm2
0x00405aa7 <__gmpn_divrem_1+263>:       punpckldq %mm0,%mm1
0x00405aaa <__gmpn_divrem_1+266>:       pmuludq %mm4,%mm2
0x00405aad <__gmpn_divrem_1+269>:       paddq  %mm2,%mm1
0x00405ab0 <__gmpn_divrem_1+272>:       pxor   %mm2,%mm2


Mark

Reply via email to