[Numpy-discussion] Segfault in mingw in test_arrayprint.TestComplexArray

David Cournapeau cournape@gmail....
Fri Jul 20 13:40:37 CDT 2012


On Fri, Jul 20, 2012 at 12:24 PM, Ondřej Čertík <ondrej.certik@gmail.com> wrote:
>>> So I have tried the MinGW-5.0.3.exe in Wine, but it tries to install
>>> from some wrong url and it fails to install.
>>> I have unpacked the tarballs by hand into "~/.wine/drive_c/MinGW":
>>>
>> Not surprising, that MinGW is really getting old. It's still the last
>> available one with gcc 3.x as IIRC.
>
> To make things reproducible, I've put all my packages in this repository:
>
> https://github.com/certik/numpy-vendor
>
>>
>>>
>>> binutils-2.17.50-20070129-1.tar.gz
>>> w32api-3.7.tar.gz
>>> gcc-g77-3.4.5-20051220-1.tar.gz
>>> gcc-g++-3.4.5-20051220-1.tar.gz
>>> gcc-core-3.4.5-20051220-1.tar.gz
>>> mingw-runtime-3.10.tar.gz
>>>
>>> also in the same directory, I had to do:
>>>
>>> cp ../windows/system32/msvcr90.dll lib/
>>
>>
>> Looks like I have an older Wine, not sure if it makes a difference:
>>
>> $ locate msvcr90.dll
>> /Users/rgommers/.wine/drive_c/windows/winsxs/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375/msvcr90.dll
>> /Users/rgommers/__wine/drive_c/windows/winsxs/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375/msvcr90.dll
>>
>> $ locate msvcr71.dll
>> /Users/rgommers/.wine/drive_c/windows/system32/msvcr71.dll
>> /Users/rgommers/Code/wine/dlls/msvcr71/msvcr71.dll.fake
>> /Users/rgommers/Code/wine/dlls/msvcr71/msvcr71.dll.so
>> /Users/rgommers/__wine/drive_c/windows/system32/msvcr71.dll
>> /Users/rgommers/wine/build/wine-1.1.39/dlls/msvcr71/msvcr71.dll.fake
>> /Users/rgommers/wine/build/wine-1.1.39/dlls/msvcr71/msvcr71.dll.so
>> /Users/rgommers/wine/wine-1.1.39/lib/wine/fakedlls/msvcr71.dll
>> /Users/rgommers/wine/wine-1.1.39/lib/wine/msvcr71.dll.so
>> /usr/local/lib/wine/fakedlls/msvcr71.dll
>> /usr/local/lib/wine/msvcr71.dll.so
>
> Actually, I made a mistake --- the one in
> drive_c/windows/system32/msvcr90.dll does not work for me.
> The one I use is installed by the Python installer (as I found out)
> and it is in:
>
> drive_c/windows/winsxs/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375/msvcr90.dll
>
> Which seems to be the same as the one that you use. Just in case, I've
> put it here:
>
> https://github.com/certik/numpy-vendor/blob/master/msvcr90.dll
>
>>
>>
>>>
>>>
>>> Also I've added the bin directory to PATH using the following trick:
>>>
>>> $ cat > tmp <<EOF
>>> REGEDIT4
>>>
>>> [HKEY_CURRENT_USER\Environment]
>>> "PATH"="C:\\\\MinGW\\\\bin"
>>> EOF
>>> $ wine regedit tmp
>>>
>>>
>>>
>>> Then I build and installed numpy using:
>>>
>>> wine "C:\Python27\python" setup.py build --compiler=mingw32 install
>>>
>>> And now there is no segfault when constructing a complex array! So
>>> newer (newest) mingw miscompiles NumPy somehow...
>>>
>>>
>>> Anyway, running tests, it gets much farther then before, now it hangs at:
>>>
>>>
>>> test_multiarray.TestIO.test_ascii ...
>>> err:ntdll:RtlpWaitForCriticalSection section 0x785b7428 "?" wait timed
>>> out in thread 0009, blocked by 0000, retrying (60 sec)
>>> fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4090409, 0000: semi-stub!
>>> err:ntdll:RtlpWaitForCriticalSection section 0x785b7428 "?" wait timed
>>> out in thread 0009, blocked by 0000, retrying (60 sec)
>>> err:ntdll:RtlpWaitForCriticalSection section 0x785b7428 "?" wait timed
>>> out in thread 0009, blocked by 0000, retrying (60 sec)
>>> ...
>>>
>>> Not sure what this problem is yet.
>
>
> This however is a big problem. I've tested it on the actual Windows
> 64bit XP box, and the test simply segfaults at this place.
> Ralf, I should note, that your latest scipy RC tests also segfault on
> my Windows machine, so maybe something is wrong with the machine...

I have some good news for numpy, but bad news for you :)
  -  first, building numpy and testing mostly work for me (tried the
last commit from 1.7.x branch) with mingw 5.0.4 with python 2.7.3 and
*without* any change in the code (i.e. I did not commented out the
part to build msgcr90 import library).
  - I don't know what the issue is in your environment for msvc90, but
I can confirm that it is required. gcc 3.x which was built around
2005/2006 cannot possibly provide the import library for msvcr90, and
the build works ok
  - I strongly suspect some issues because you started with mingw /
gcc 4.x. If you moved some libraries in system directories, I suggest
you start fresh from a clean state in your VM (or rm -rf .wine :) ).

I noticed that when VS 2008 is available, distutils does the
configuration with MS compilers, which is broken. I will test later on
a machine wo vs 2008.

cheers,

David


More information about the NumPy-Discussion mailing list