Отладка SIGSEGV по инструкции ret std::chrono::system::now()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Отладка SIGSEGV по инструкции ret std::chrono::system::now()

Сообщение Anonymous »

Я наблюдал странный сбой в многопоточном приложении C++, работающем в Linux (Ubuntu 22.04). Иногда приложение аварийно завершает работу с ошибкой сегментации в инструкции ret std::chrono::system::now().
Обратная трассировка сбойного потока:
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Section `.reg-xstate/1351844' in core file too small.
#0 0x00007fe72b4dc053 in std::chrono::_V2::system_clock::now() () from /lib/x86_64-linux-gnu/libstdc++.so.6
[Current thread is 1 (Thread 0x7fe72b69bc80 (LWP 1351844))]
(gdb) bt
#0 0x00007fe72b4dc053 in std::chrono::_V2::system_clock::now() () from /lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x000248d31ec97512 in ?? ()
#2 0x00007fe72b7b6040 in ?? ()
#3 0x0000000000000000 in ?? ()

Сохраненные регистры:
rax 0x1870176148f6ce6c
rbx 0x2f9
rcx 0x0
rdx 0x0
rsi 0x5606e6092940
rdi 0x7fe706be0b00
rbp 0x7ffde834e670
rsp 0x7ffde834e438
r8 0x2
r9 0x5606e6092940
r10 0x7fe63ae00300
r11 0x7ffde835a080
r12 0x7fe72ac1e790
r13 0x7fe706ed2bd0
r14 0x7fe706ed2b80
r15 0x7ffde834f360
rip 0x7fe72b4dc053

Сборка места сбоя:
0x7fe72b4dc010 endbr64
0x7fe72b4dc014 sub rsp,0x28
0x7fe72b4dc018 xor edi,edi
0x7fe72b4dc01a mov rax,QWORD PTR fs:0x28
0x7fe72b4dc023 mov QWORD PTR [rsp+0x18],rax
0x7fe72b4dc028 xor eax,eax
0x7fe72b4dc02a mov rsi,rsp
0x7fe72b4dc02d call 0x7fe72b4a0c00
0x7fe72b4dc032 imul rax,QWORD PTR [rsp],0x3b9aca00
0x7fe72b4dc03a add rax,QWORD PTR [rsp+0x8]
0x7fe72b4dc03f mov rdx,QWORD PTR [rsp+0x18]
0x7fe72b4dc044 sub rdx,QWORD PTR fs:0x28
0x7fe72b4dc04d jne 0x7fe72b4dc054
0x7fe72b4dc04f add rsp,0x28
0x7fe72b4dc053 ret

Подробнее здесь: https://stackoverflow.com/questions/797 ... osystemnow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»