Ошибка 4 означает «Причиной было чтение в пользовательском режиме, в результате чего страница не была найдена». Есть инструмент, который декодирует его здесь .
Вот определение из ядра. Имейте в виду, что 4 означает, что бит 2 установлен, а другие биты не установлены. Если вы преобразуете его в двоичный код, это становится понятным.
/*
* Page fault error code bits
* bit 0 == 0 means no page found, 1 means protection fault
* bit 1 == 0 means read, 1 means write
* bit 2 == 0 means kernel, 1 means user-mode
* bit 3 == 1 means use of reserved bit detected
* bit 4 == 1 means fault was an instruction fetch
*/
#define PF_PROT (1<<0)
#define PF_WRITE (1<<1)
#define PF_USER (1<<2)
#define PF_RSVD (1<<3)
#define PF_INSTR (1<<4)
Теперь, «ip 00007f9bebcca90d» означает, что указатель инструкции был 0x00007f9bebcca90d, когда произошла ошибка.
«libQtWebKit.so.4.5.2 [7f9beb83a000 + f6f000]» говорит вам:
- Объект, в котором произошел сбой: "libQtWebKit.so.4.5.2"
- Базовый адрес этого объекта "7f9beb83a000"
- Насколько велик этот объект: "f6f000"
Если вы берете базовый адрес и вычитаете его из ip, вы получаете смещение в этот объект:
0x00007f9bebcca90d - 0x7f9beb83a000 = 0x49090D
Затем вы можете запустить addr2line:
addr2line -e /usr/lib64/qt45/lib/libQtWebKit.so.4.5.2 -fCi 0x49090D
??
??:0
В моем случае это не увенчалось успехом: либо копия, которую я установил, не идентична вашей, либо она удалена.