2015-07-04 6 views
1

Моя проблема довольно просто: запуск «питон» команду (а не скрипт) на моей малиновой пи модели А + работает Raspbian свистящих дает сбой сегментации:на Raspberry Pi

[email protected] ~ $ python 
Segmentation fault 

Я нашел довольно много потоков, касающихся «сегментационной ошибки» в скриптах python (часто связанных с external C modules). Некоторые другие, более конкретно, о малине pi часто говорили о «ошибке сегментации» во время обновления apt-get с использованием модуля python (here или there).

Но это не отвечает на мою проблему.

Запуск его в GDB дал:

[email protected] ~ $ gdb python 
GNU gdb (GDB) 7.4.1-debian 
Copyright (C) 2012 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 "arm-linux-gnueabihf". 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>... 
Reading symbols from /usr/bin/python...BFD: /usr/bin/python: invalid string offset 4204450 >= 26547 for section `.dynstr' 
BFD: /usr/bin/python: invalid string offset 34425 >= 26547 for section `.dynstr' 
BFD: /usr/bin/python: invalid string offset 276647 >= 26547 for section `.dynstr' 
... 
(50 or so such lines later) 
... 
BFD: /usr/bin/python: invalid string offset 2340624285 >= 26547 for section `.dynstr' 
(no debugging symbols found)...done. 
(gdb) run 
Starting program: /usr/bin/python 

Program received signal SIGSEGV, Segmentation fault. 
0xb6ff0124 in ??() from /lib/ld-linux-armhf.so.3 
(gdb) backtrace 
#0 0xb6ff0124 in ??() from /lib/ld-linux-armhf.so.3 
#1 0xbefff358 in ??() 
Cannot access memory at address 0x7a626964 

Я нашел this related post, но нет четкого решения не дается.

Последний элемент: python3 работает отлично.

Может кто-нибудь здесь есть представление о том, что происходит?

Спасибо за вашу помощь ~

+0

Вы попробовали запустить gdb? – CrazyCasta

+0

Спасибо за ответ CrazyCasta. Извините, что вы подразумеваете под «run in gdb»? Разве я не говорю о «gdb python» в моем вопросе? Если нет, не могли бы вы быть более конкретными? – keuj6

+0

Запуск 'gdb program_name' только запускает среду отладки, она фактически не пытается запустить программу. Все эти сообщения в основном говорят о том, что у него проблемы с чтением отладочных символов (что означает, что отладка будет сложнее читать, а не сама программа). Чтобы получить какую-либо полезную информацию из gdb о том, где происходит segfault, вам нужно запустить программу (набрав 'run' в приглашении' (gdb) 'и нажмите enter). – CrazyCasta

ответ

1

В вы получаете от GDB при запуске Python сообщения указывают на Python исполняемый вы пытаетесь использовать для какой-либо причине поврежден. Попробуйте переустановить все пакеты, относящиеся к Python:

$ sudo apt-get install --reinstall `dpkg --get-selections | grep -E '^(lib)?python' | cut -f1 | cut -d: -f1` 
+0

Он решил мою проблему! Я попробовал «-reinstall python» раньше, но этого было, конечно, недостаточно. Только для сносок истории: у меня есть некоторые segfaults в процессе переустановки, пока я не заменил поврежденный пакет, я полагаю (либо python-serial, либо python-tk, я бы сказал). Затем я сделал «apt-get update», где пакеты, которые повышали segfaults выше, отображались «в очень плохом несогласованном состоянии». Я, наконец, снова установил их. Теперь моя система кажется безопасной и надежной. Большое спасибо вам @icktoofay и @CrazyCasta – keuj6