LINUX.ORG.RU

как ловить general protection?


0

1

Крутитися приложение, после этак часов 8 оно падает в dmesg вижу:

app[29461] general protection ip:4061a0 sp:7fff860eea40 error:0 in app[400000+7d000]

Core нету, не смотря на ulimit -c unlimited.

Valgrind ом его долгое время гонял, тоже без результно.

Не понятно почему нет core. Судя по той строчке, что он написал падает в функции которая из моего кода явно не дергается.

Есть какой-то шанс собрать core? А по из этой строчки не понятно, что происходит.

0000000000406190 <x_gc_free>:
406190: 53 push %rbx
406191: 48 8b 07 mov (%rdi),%rax
406194: 48 c7 07 00 00 00 00 movq $0x0,(%rdi)
40619b: 48 85 c0 test %rax,%rax
40619e: 74 13 je 4061b3 <x_gc_free+0x23>
4061a0: 48 8b 18 mov (%rax),%rbx
4061a3: 48 89 c7 mov %rax,%rdi
4061a6: e8 fd f0 ff ff callq 4052a8 <free@plt>
4061ab: 48 85 db test %rbx,%rbx
4061ae: 48 89 d8 mov %rbx,%rax
4061b1: 75 ed jne 4061a0 <x_gc_free+0x10>
4061b3: 5b pop %rbx
4061b4: c3 retq
4061b5: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
4061ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)


void
x_gc_free (struct gc_arena *a)
{
struct gc_entry *e;
/*mutex_lock_static (L_GC_MALLOC);*/
e = a->list;
a->list = NULL;
/*mutex_unlock_static (L_GC_MALLOC);*/

while (e != NULL)
{
struct gc_entry *next = e->next;
free (e);
e = next;
}
}


Из асма понятно только, что падает на этой строке:

struct gc_entry *next = e->next;

Информация довольно бесполезная, попробуй таки core собрать. Почитай man core.

frey ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.