2016-08-14 3 views
1

나이가 들지 않고 매주 실행되는 python 프로그램의 segfault ("잘못된 연산 (코어 덤프)")가 발생합니다. 또한 Nitrous에서 Ubuntu를 실행 중입니다. 나는 C에서 코딩 할 때 이러한 yonks를 다루었 다. 그리고 나는 최근에 그것들을 대처하지 않아도되었다.urllib3 segfault (코어 덤프)

라이브러리 urllib3을 가져 오면 문제가 발생한 것 같습니다. 누구든지 수정 사항을 알고 있습니까?

또한 누군가 향후 이러한 문제를 진단하기위한 최상의 워크 플로에 대해 조언하거나 연결할 수 있습니까?

감사합니다!

+0

문제점을 설명하기위한 최소, 검증 가능한 완전한 예제를 게시하십시오 (http://stackoverflow.com/help/mcve). –

답변

0

"잘못된 동작"

보통은 덜 가능한 하나 (예컨대 Ivy Bridge)의 더 많은 능력 프로세서 (예컨대 Haswell)에 대한 컴파일 된 코드를 실행하는 것을 의미한다.

라이브러리 urllib3을 가져 오면 문제가 발생한 것 같습니다. 내 우분투 시스템에서

, import urllib3로드 libssl.so.1.0.0, libcrypto.so.1.0.0_ssl.x86_64-linux-gnu.so. 이러한 암호 라이브러리는 프로세서가 지원하지 않는 AVX, AVX2 등의 지침으로 컴파일 될 가능성이 큽니다. 이러한 문제를

첫 번째 단계를 진단

최고의 워크 플로우는 명령하면 SIGILL 원인을 찾을 수 있어야합니다. 이렇게하려면 실행 위의

gdb python 
(gdb) run 
>>> import urllib3 # do whatever is necessary to reproduce SIGILL 
(gdb) x/i $pc 
(gdb) info sym $pc 

마지막 두 명령은 당신에게 SIGILL의 원인이되는 명령, 그 명령이 사용되는 라이브러리를 제공해야합니다. 해당 지침이 무엇인지 알았 으면 프로세서가이를 지원하는지 확인할 수 있으며 "유죄"라이브러리 배포자에게 문의하여 다른 컴파일 (CPU에서 지원하지 않는 지침을 사용하지 않고)을 얻을 수 있습니다.