2016-05-24 3 views
2

сегментации У меня есть странная проблема, когда я бегу питона оболочки:интерпретатор Python

$ python3 

Python 3.4.2 (default, Oct 8 2014, 10:45:20) 
[GCC 4.9.1] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print('Hello') # Error appears for any command in shell 

[1] 9021 segmentation fault python3 

Но когда я бегу python3 hello.py это работает.

Я уже пробовал python2.7, python3.4 и python3.5 и получил ту же ошибку.

OS Debian 8.4

Update 1

выход journalctl:

-- Logs begin at нд 2016-05-22 14:57:54 EEST, end at вт 2016-05-24 15:56:53 EEST. -- 
тра 24 15:56:53 desktop kernel: python[21150]: segfault at 0 ip   (null) sp 00007ffda62fe218 error 14 in python3[400000+3b2000] 

Update 2

Проблема еще не решена, но я обнаружил, что он работает правильно, если я запускаю его как другой пользователь. Я уже пытался удалить .cache и некоторые каталоги, связанные с python (.jupyter, .ipython), но это не дает результата.

Update 3

выход GDB

gdb python 
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1 
Copyright (C) 2014 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". 
Type "show configuration" for configuration details. 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>. 
Find the GDB manual and other documentation resources online at: 
<http://www.gnu.org/software/gdb/documentation/>. 
For help, type "help". 
Type "apropos word" to search for commands related to "word"... 
Reading symbols from python...(no debugging symbols found)...done. 
(gdb) run 
Starting program: /usr/bin/python 
[Thread debugging using libthread_db enabled] 
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 
Python 2.7.9 (default, Mar 1 2015, 12:57:24) 
[GCC 4.9.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print("Hello") 


Program received signal SIGSEGV, Segmentation fault. 
0x0000000000000000 in ??() 
(gdb) 
(gdb) backtrace 
#0 0x0000000000000000 in ??() 
#1 0x00007ffff694892e in rl_callback_read_char() from /lib/x86_64-linux-gnu/libreadline.so.6 
#2 0x00007ffff6b67cd5 in ??() from /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so 
#3 0x0000000000449d88 in PyOS_Readline() 
#4 0x0000000000422d2a in ??() 
#5 0x00000000004c4e8a in ??() 
#6 0x00000000004c460e in PyParser_ASTFromFile() 
#7 0x0000000000449b11 in PyRun_InteractiveOneFlags() 
#8 0x0000000000449937 in PyRun_InteractiveLoopFlags() 
#9 0x000000000042d96b in ??() 
#10 0x00000000004982f2 in Py_Main() 
#11 0x00007ffff6f12b45 in __libc_start_main (main=0x497d80 <main>, argc=1, argv=0x7fffffffe748, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe738) at libc-start.c:287 
#12 0x0000000000497ca0 in _start() 
(gdb) 

Update 4

Strace отладки для следующих действий:

python 
Python 2.7.9 (default, Mar 1 2015, 12:57:24) 
[GCC 4.9.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> print("Hello") 

[1] 17271 segmentation fault python 

И журнал Трассирование:

strace -p 17271 
Process 17271 attached 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], 0}, 8) = 0 
read(0, "p", 1)       = 1 
write(1, "p", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "r", 1)       = 1 
write(1, "r", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "i", 1)       = 1 
write(1, "i", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "n", 1)       = 1 
write(1, "n", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "t", 1)       = 1 
write(1, "t", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "(", 1)       = 1 
write(1, "(", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, ")", 1)       = 1 
write(1, ")", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\33", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "[", 1)       = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "D", 1)       = 1 
write(1, "\10", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\"", 1)      = 1 
write(1, "\")\10", 3)     = 3 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\"", 1)      = 1 
write(1, "\")\10", 3)     = 3 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\33", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "[", 1)       = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "D", 1)       = 1 
write(1, "\10", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "H", 1)       = 1 
write(1, "H\")\10\10", 5)    = 5 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "e", 1)       = 1 
write(1, "e\")\10\10", 5)    = 5 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "l", 1)       = 1 
write(1, "l\")\10\10", 5)    = 5 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "l", 1)       = 1 
write(1, "l\")\10\10", 5)    = 5 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "o", 1)       = 1 
write(1, "o\")\10\10", 5)    = 5 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\r", 1)      = 1 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, NULL, NULL)  = 1 (in [0]) 
rt_sigaction(SIGWINCH, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, 8) = 0 
read(0, "\r", 1)      = 1 
write(1, "\n", 1)      = 1 
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig -icanon -echo ...}) = 0 
ioctl(0, SNDCTL_TMR_STOP or SNDRV_TIMER_IOCTL_GINFO or TCSETSW, {B38400 opost isig icanon echo ...}) = 0 
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 
rt_sigaction(SIGWINCH, {SIG_DFL, [], SA_RESTORER, 0x7fd9005a58d0}, {0x7fd8ff2f8270, [], SA_RESTORER|SA_RESTART, 0x7fd9005a58d0}, 8) = 0 
select(1, [0], NULL, [0], {0, 500000}) = 0 (Timeout) 
write(1, "\n", 1)      = 1 
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} --- 
+++ killed by SIGSEGV +++ 

Update 5

переменные окружающей среды Diff (хорошо работает с суперпользователя):

Environmental variables diff

Update 6

Как обычный пользователь:

ldd /usr/bin/python 
    linux-vdso.so.1 (0x00007ffcb1648000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f316da1d000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f316d815000) 
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f316d60d000) 
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f316d3ed000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f316d0e5000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f316cd35000) 
    /lib64/ld-linux-x86-64.so.2 (0x000055ca7cb3e000) 

Как корень:

ldd /usr/bin/python 
    linux-vdso.so.1 (0x00007fffc8ef0000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f79bf425000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f79bf21d000) 
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f79bf015000) 
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f79bedf5000) 
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f79beaed000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f79be73d000) 
    /lib64/ld-linux-x86-64.so.2 (0x00005600afb99000) 
+1

Я добавляю что-то близко один раз, проблема заключалась в том, что для какой-то оккультной причины некоторые .pyc-файлы в/usr/lib/были повреждены. Их устранение устранило проблему. – polku

+0

Я сделал 'cd/usr/lib && sudo find. -name "* .pyc" -exec rm -rf {} \; 'он удаляет все * .pyc-файлы, но это не решает проблему. –

+1

Вы проверяли переменные оболочки $ PYTHONPATH и $ PYTHONSTARTUP? возможно, они указывают на некоторые диски с противным * .pyc? – claperius

ответ

2

Итак, после некоторой отладки (хотя комментарии теперь больше походят на чат, они могут быть полезны в качестве примера сеанса отладки) было обнаружено, что segfault произошел из-за некоторой проблемы с настройкой readline, а именно для конкретных пользователей ~/.inputrc (и я бы сказал, что это, вероятно, ошибка чтения, потому что независимо от конфигурации, она не должна segfault).

Это показывает, насколько сложным и хрупким наше программное обеспечение, поскольку на первый взгляд не очевидно, что python может свернуть этот путь из-за сломанного файла конфигурации для библиотеки, которую не многие даже помнят о использовании python (если они даже помнят, что она существует).

2

Ошибка сегментации может иметь много причин.

Например:

  • Низкая память
  • Неисправный Ram памяти
  • Fetching больших объемов данных больше, чем своп мем
  • глючный код
  • множественным рекурсии

Потому что вы просто пытаюсь напечатать что-то, я бы сказал, что это может быть причина 1 или 2.

+0

У меня 16 ГБ Рама, и все работает отлично. Это определенно ** проблема без оборудования **, потому что оболочка python работает как «root» или любой другой пользователь, кроме моей основной. Пожалуйста, прочитайте комментарии к моему вопросу и спасибо за ответ! –

Смежные вопросы