LINUX.ORG.RU
ФорумAdmin

инструменты для «Ошибка сегментирования»


0

1

Чем можно отловить ошибку сегментирования, возникающую в некоторых Питон-скриптах. Например, в этом простейшем скрипте возникает проблема:

$ ./test.py
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Ошибка сегментирования

$ cat test.py
#!/usr/bin/python
from enthought.mayavi import mlab
mlab.clf()

python2.7


$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 11.04
Release:    11.04
Codename:    natty

а что glxinfo пишет

видно же , что ускорение графики хочет, а его нет.

anonymous ()
Ответ на: комментарий от AITap

помогите понять причину ошибки сегментирования :

$ gdb --args python ./test.py
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/python...(no debugging symbols found)...done.
(gdb) next
The program is not being run.
(gdb) start
Temporary breakpoint 1 at 0x417f80
Starting program: /usr/bin/python ./test.py
[Thread debugging using libthread_db enabled]

Temporary breakpoint 1, 0x0000000000417f80 in main ()
(gdb) next
Single stepping until exit from function main,
which has no line number information.
0x00000000004181d5 in Py_Main ()
(gdb) next
Single stepping until exit from function Py_Main,
which has no line number information.
[New Thread 0x7fffe651b700 (LWP 32357)]
[New Thread 0x7fffe5d1a700 (LWP 32358)]
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff156c0f3 in wxWindow::DoSetSize(int, int, int, int, int) ()
   from /usr/lib/libwx_gtk2u_core-2.8.so.0
(gdb) next
Single stepping until exit from function _ZN8wxWindow9DoSetSizeEiiiii,
which has no line number information.
[Thread 0x7fffe651b700 (LWP 32357) exited]
[Thread 0x7fffe5d1a700 (LWP 32358) exited]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb) 
nindza ()
Ответ на: комментарий от nindza

> Program received signal SIGSEGV, Segmentation fault.
После этого нужно вводить bt full.

Возможно, проблема в том, что биндинг для python не проверяет, доступен ли ему GLX, и разыменовывает указатель NULL. Или отсутствие GLX в данном случае является нормальным (часто это свидетельствует о проблеме с видеодрайвером)?

AITap ★★★★★ ()

Если не нужен общий метод, а нужно побороть конкретную ошибку, то почти наверняка нужно поставить драйвер на видеокарту. Стоит закрытый попробовать: если уж на нем не взлетит, то алес капут.

anonymous ()
Ответ на: комментарий от anonymous

проблема с дровами для видеокарты есть.

но не понятно почему вылетают скрипты Питона не использующие OpenGL ... (ничего не визуализируют), но использующие самописные библиотеки на Си?

gdb --args python ./solver_MV.py
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/python...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/python ./solver_MV.py
[Thread debugging using libthread_db enabled]
[New Thread 0x7fffefa31700 (LWP 3826)]
[New Thread 0x7fffe37d1700 (LWP 3839)]
[New Thread 0x7fffe2fd0700 (LWP 3840)]

Program received signal SIGSEGV, Segmentation fault.
0x00007fffeeba64ff in c_maker (n_row=868, XC=0x816a678, n_col=868, YG=0x816a630,
    m=1, b=0x5be3930, z=0x4739ee0, j=0x5071e70, mx=0xca67e010, vr=0x81db3c0, is_Stat=1)
    at cmaker.c:259
259               *(m++) = dot_product(W,U);
(gdb) bt full
    at cmaker.c:259
        W = {-0.41903452264540175, -0.028407763891444299, -7.9736943216826965}
        a = {0, 0, 3}
        b = {0.41582338159999999, 0, 2.9781476006999998}
        c = {0.40731145260000001, 0.125556947, 2.9781476006999998}
    .
    .
    .

ЗДЕСЬ_КУЧА_ПЕРЕМЕН_ДЛЯ_РАСЧЕТОВ_С_НОРМАЛ_ЗНАЧ
    .
    .
    .
#1  0x00007ffff63d1870 in ffi_call_unix64 () from /usr/lib/python2.7/lib-dynload/_ctypes.so
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#2  0x00007ffff63d1253 in ffi_call () from /usr/lib/python2.7/lib-dynload/_ctypes.so
No symbol table info available.
#3  0x00007ffff63c9c1d in _ctypes_callproc () from /usr/lib/python2.7/lib-dynload/_ctypes.so
No symbol table info available.
#4  0x00007ffff63c1b70 in ?? () from /usr/lib/python2.7/lib-dynload/_ctypes.so
No symbol table info available.
#5  0x000000000045d864 in PyObject_Call ()
No symbol table info available.
#6  0x0000000000496c4e in PyEval_EvalFrameEx ()
No symbol table info available.
#7  0x0000000000496dbf in PyEval_EvalFrameEx ()
No symbol table info available.
#8  0x000000000049d325 in PyEval_EvalCodeEx ()
No symbol table info available.
#9  0x00000000004ecb02 in PyEval_EvalCode ()
No symbol table info available.
#10 0x00000000004fdc74 in ?? ()
No symbol table info available.
#11 0x000000000042c182 in PyRun_FileExFlags ()
No symbol table info available.
#12 0x000000000042cb4a in PyRun_SimpleFileExFlags ()
No symbol table info available.
#13 0x0000000000418c9e in Py_Main ()
No symbol table info available.
#14 0x00007ffff69c2eff in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#15 0x00000000004c62b1 in _start ()
No symbol table info available.
(gdb)


nindza ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.