Отсутствие strlen_sse4.S приводит к ошибке сегментации - PullRequest
1 голос
/ 29 августа 2011

Я пишу небольшой инструмент, написанный на c, и столкнулся с ошибкой сегментации, которую я пока не знаю, как устранить. Запуск в GDB дает мне следующую подсказку:


    Program received signal SIGSEGV, Segmentation fault. 
    __strlen_sse42 () at ../sysdeps/x86_64/multiarch/strlen-sse4.S:32 
    ../sysdeps/x86_64/multiarch/strlen-sse4.S: File or Directory not found 
    in ../sysdeps/x86_64/multiarch/strlen-sse4.S
    (gdb) bt
    0  __strlen_sse42 () at ../sysdeps/x86_64/multiarch/strlen-sse4.S:32
    1  0x00007ffff764fed8 in strdup_and_subst_obj () from /usr/lib/libgvc.so.5
    2  0x00007ffff7650631 in make_label () from /usr/lib/libgvc.so.5
    3  0x00007ffff765a6d1 in common_init_node_opt () from /usr/lib/libgvc.so.5
    4  0x00007ffff309d700 in dot_init_node_edge () from 
    usr/lib/graphviz/libgvplugin_dot_layout.so.6
    5  0x00007ffff309dcd8 in dot_layout () from /usr/lib/graphviz/libgvplugin_dot_layout.so.6
    6  0x00007ffff7633a94 in gvLayoutJobs () from /usr/lib/libgvc.so.5
    7  0x00007ffff7639425 in gvLayout () from /usr/lib/libgvc.so.5
    8  0x0000000000400eef in main ()

Я бы сказал: мне не хватает определенной зависимости в моей системе или в моем исполняемом файле (Ubuntu 11.04, 64-битная версия). Буду очень признателен за любой совет:]

Я сейчас использую:

gcc (Ubuntu / Linaro 4.5.2-8ubuntu4) 4.5.2

Редактировать:

(gdb) info registers

    rax            0x6380e0 6521056
    rbx            0x62dc14 6478868
    rcx            0x0  0
    rdx            0x0  0
    rsi            0x639770 6526832
    rdi            0x0  0
    rbp            0x639770 0x639770
    rsp            0x7fffffffd358   0x7fffffffd358
    r8             0x0  0
    r9             0x0  0
    r10            0x7fffffffd140   140737488343360
    r11            0x7ffff764fda0   140737343978912
    r12            0x62dc14 6478868
    r13            0x639770 6526832
    r14            0x0  0
    r15            0x7ffff7671d85   140737344118149
    rip            0x7ffff6d7d49f   0x7ffff6d7d49f 
    eflags         0x10246  [ PF ZF IF RF ]
    cs             0x33 51
    ss             0x2b 43
    ds             0x0  0
    es             0x0  0
    fs             0x0  0
    gs             0x0  0

1 Ответ

2 голосов
/ 29 августа 2011

Ошибка сегментации обычно является разыменованием нулевого указателя. Учитывая, что libc довольно солиден, вы, скорее всего, захотите перекомпилировать вашу программу с символами отладки и получить вариант отладки пакета Ubuntu для libgvc.

"Missing strlen_sse4.S" - это просто отладчик, жалующийся на то, что не может найти файл, который предоставил бы вам список сайтов аварий. Вам нужно только получить копию glibc source, чтобы проверить файл.

...