2010-05-04 4 views
0

В проекте, над которым я работаю, мы используем модуль Python C, составленный из Fortran с f2py. У меня не возникло проблем с его созданием на Windows 7 32bit (с использованием mingw32), а на серверах он построен на 32-битной Linux. Но я недавно установил Ubuntu 10.04 LTS 64bit на свой ноутбук, который я использую для разработки, и когда я его создаю, я получаю много предупреждений (хотя я, очевидно, установил все библиотеки/компиляторы gcc/fortran), но он завершает сборку. Однако, когда я пытаюсь использовать встроенный модуль в приложении, большинство из них, кажется, хорошо работать, но затем она падает с ошибкой:Создание модуля Python C из источников Fortran на Ubuntu 10.04 LTS

* glibc detected * /home/botondus/Envs/gasit/bin/python: free(): invalid next size (fast): 0x0000000006a44760 ***

предупреждения на ведение f2py -c -m module_name ./fortran/source .f90

customize UnixCCompiler 
customize UnixCCompiler using build_ext 
customize GnuFCompiler 
Could not locate executable g77 
Found executable /usr/bin/f77 
gnu: no Fortran 90 compiler found 
gnu: no Fortran 90 compiler found 
customize IntelFCompiler 
Could not locate executable ifort 
Could not locate executable ifc 
customize LaheyFCompiler 
Could not locate executable lf95 
customize PGroupFCompiler 
Could not locate executable pgf90 
Could not locate executable pgf77 
customize AbsoftFCompiler 
Could not locate executable f90 
absoft: no Fortran 90 compiler found 
absoft: no Fortran 90 compiler found 
absoft: no Fortran 90 compiler found 
absoft: no Fortran 90 compiler found 
absoft: no Fortran 90 compiler found 
absoft: no Fortran 90 compiler found 
customize NAGFCompiler 
Found executable /usr/bin/f95 
customize VastFCompiler 
customize GnuFCompiler 
gnu: no Fortran 90 compiler found 
gnu: no Fortran 90 compiler found 
customize CompaqFCompiler 
Could not locate executable fort 
customize IntelItaniumFCompiler 
Could not locate executable efort 
Could not locate executable efc 
customize IntelEM64TFCompiler 
customize Gnu95FCompiler 
Found executable /usr/bin/gfortran 
customize Gnu95FCompiler 
customize Gnu95FCompiler using build_ext 

Я пытался строить 32-битную версию, установив пакеты gfortran мультибиблиотечных и работает f2py с -m32 вариантом (но без успеха):

f2py -c -m module_name ./fortran/source.f90 --f77flags="-m32" --f90flags="-m32"

Любые предложения по тому, что я мог бы попытаться либо построить 32-битную версию, либо правильно построить 64-битную версию?

Редактировать: Похоже, что он сработает прямо в конце подпрограммы. «Запись» выполняется отлично ... что странно.

 write(6,*)'Eh=',Eh 

end subroutine calcolo_involucro 

Полный трассировку очень долго, и я не уверен, если это любая помощь, но здесь это:

*** glibc detected *** /home/botondus/Envs/gasit/bin/python: free(): invalid next size (fast): 0x0000000007884690 *** 
======= Backtrace: ========= 
/lib/libc.so.6(+0x775b6)[0x7fe24f8f05b6] 
/lib/libc.so.6(cfree+0x73)[0x7fe24f8f6e53] 
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x4183c)[0x7fe24a18183c] 
/home/botondus/Envs/gasit/bin/python[0x46a50d] 
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x4fbd8)[0x7fe24a18fbd8] 
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x5aded)[0x7fe24a19aded] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x516e)[0x4a7c5e] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x5a60)[0x4a8550] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671] 
/home/botondus/Envs/gasit/bin/python[0x537620] 
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7] 
/home/botondus/Envs/gasit/bin/python[0x427dff] 
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7] 
/home/botondus/Envs/gasit/bin/python[0x477bff] 
/home/botondus/Envs/gasit/bin/python[0x46f47f] 
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4888)[0x4a7378] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671] 
/home/botondus/Envs/gasit/bin/python[0x537620] 
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7] 
/home/botondus/Envs/gasit/bin/python(PyEval_CallObjectWithKeywords+0x43)[0x4a1b03] 
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x2ee94)[0x7fe24a16ee94] 
/home/botondus/Envs/gasit/bin/python(_PyObject_Str+0x61)[0x454a81] 
/home/botondus/Envs/gasit/bin/python(PyObject_Str+0xa)[0x454b3a] 
/home/botondus/Envs/gasit/bin/python[0x461ad3] 
/home/botondus/Envs/gasit/bin/python[0x46f3b3] 
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4888)[0x4a7378] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809] 
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x5a60)[0x4a8550] 
======= Memory map: ======== 
00400000-0061c000 r-xp 00000000 08:05 399145        /home/botondus/Envs/gasit/bin/python 
0081b000-0081c000 r--p 0021b000 08:05 399145        /home/botondus/Envs/gasit/bin/python 
0081c000-0087e000 rw-p 0021c000 08:05 399145        /home/botondus/Envs/gasit/bin/python 
0087e000-0088d000 rw-p 00000000 00:00 0 
01877000-07a83000 rw-p 00000000 00:00 0         [heap] 
7fe240000000-7fe240021000 rw-p 00000000 00:00 0 
7fe240021000-7fe244000000 ---p 00000000 00:00 0 
7fe247631000-7fe2476b1000 r-xp 00000000 08:03 140646      /usr/lib/libfreetype.so.6.3.22 
7fe2476b1000-7fe2478b1000 ---p 00080000 08:03 140646      /usr/lib/libfreetype.so.6.3.22 
7fe2478b1000-7fe2478b6000 r--p 00080000 08:03 140646      /usr/lib/libfreetype.so.6.3.22 
7fe2478b6000-7fe2478b7000 rw-p 00085000 08:03 140646      /usr/lib/libfreetype.so.6.3.22 
7fe2478b7000-7fe2478bb000 r-xp 00000000 08:03 263882      /usr/lib/python2.6/dist-packages/PIL/_imagingft.so 
7fe2478bb000-7fe247aba000 ---p 00004000 08:03 263882      /usr/lib/python2.6/dist-packages/PIL/_imagingft.so 
7fe247aba000-7fe247abb000 r--p 00003000 08:03 263882      /usr/lib/python2.6/dist-packages/PIL/_imagingft.so 
7fe247abb000-7fe247abc000 rw-p 00004000 08:03 263882      /usr/lib/python2.6/dist-packages/PIL/_imagingft.so 
7fe247abc000-7fe247abf000 r-xp 00000000 08:03 266773      /usr/lib/python2.6/lib-dynload/_bytesio.so 
7fe247abf000-7fe247cbf000 ---p 00003000 08:03 266773      /usr/lib/python2.6/lib-dynload/_bytesio.so 
7fe247cbf000-7fe247cc0000 r--p 00003000 08:03 266773      /usr/lib/python2.6/lib-dynload/_bytesio.so 
7fe247cc0000-7fe247cc1000 rw-p 00004000 08:03 266773      /usr/lib/python2.6/lib-dynload/_bytesio.so 
7fe247cc1000-7fe247cc5000 r-xp 00000000 08:03 266786      /usr/lib/python2.6/lib-dynload/_fileio.so 
7fe247cc5000-7fe247ec4000 ---p 00004000 08:03 266786      /usr/lib/python2.6/lib-dynload/_fileio.so 
7fe247ec4000-7fe247ec5000 r--p 00003000 08:03 266786      /usr/lib/python2.6/lib-dynload/_fileio.so 
7fe247ec5000-7fe247ec6000 rw-p 00004000 08:03 266786      /usr/lib/python2.6/lib-dynload/_fileio.so 
7fe247ec6000-7fe24800c000 r-xp 00000000 08:03 141358      /usr/lib/libxml2.so.2.7.6 
7fe24800c000-7fe24820b000 ---p 00146000 08:03 141358      /usr/lib/libxml2.so.2.7.6 
7fe24820b000-7fe248213000 r--p 00145000 08:03 141358      /usr/lib/libxml2.so.2.7.6 
7fe248213000-7fe248215000 rw-p 0014d000 08:03 141358      /usr/lib/libxml2.so.2.7.6 
7fe248215000-7fe248216000 rw-p 00000000 00:00 0 
7fe248216000-7fe248229000 r-xp 00000000 08:03 140632      /usr/lib/libexslt.so.0.8.15 
7fe248229000-7fe248428000 ---p 00013000 08:03 140632      /usr/lib/libexslt.so.0.8.15 
7fe248428000-7fe248429000 r--p 00012000 08:03 140632      /usr/lib/libexslt.so.0.8.15 
7fe248429000-7fe24842a000 rw-p 00013000 08:03 140632      /usr/lib/libexslt.so.0.8.15 
7fe24842a000-7fe248464000 r-xp 00000000 08:03 141360      /usr/lib/libxslt.so.1.1.26 
7fe248464000-7fe248663000 ---p 0003a000 08:03 141360      /usr/lib/libxslt.so.1.1.26 
7fe248663000-7fe248664000 r--p 00039000 08:03 141360      /usr/lib/libxslt.so.1.1.26 
7fe248664000-7fe248665000 rw-p 0003a000 08:03 141360      /usr/lib/libxslt.so.1.1.26 
7fe248665000-7fe24876e000 r-xp 00000000 08:03 534240      /usr/local/lib/python2.6/dist-packages/lxml/etree.so 
7fe24876e000-7fe24896d000 ---p 00109000 08:03 534240      /usr/local/lib/python2.6/dist-packages/lxml/etree.so 
7fe24896d000-7fe24896e000 r--p 00108000 08:03 534240      /usr/local/lib/python2.6/dist-packages/lxml/etree.so 
7fe24896e000-7fe248999000 rw-p 00109000 08:03 534240      /usr/local/lib/python2.6/dist-packages/lxml/etree.so 
7fe248999000-7fe2489a7000 rw-p 00000000 00:00 0 
7fe2489a7000-7fe2489bd000 r-xp 00000000 08:03 132934      /lib/libgcc_s.so.1 
+0

Мое предположение было бы ошибкой в ​​части Фортрана, которая экспонируется при создании в виде 64-битного. Но без какого-либо источника мы можем только догадываться. Можете ли вы представить простой пример, чтобы показать проблему? – janneb

ответ

0

К счастью удалось решить эту проблему. Кажется, я не заметил, что версия пакета numpy в репозиториях для Ubuntu 10.04 - только v1.3.0. Я удалил numpy, а затем создал v1.4.1 из источника. После этого повторный запуск f2py дал те же предупреждения, однако использование модуля больше не приводит к сбою.