Сообщение Re: Определение стека потока, который стоит на мьютексе от 03.12.2021 9:18
Изменено 03.12.2021 9:22 lpd
Re: Определение стека потока, который стоит на мьютексе
Здравствуйте, Рома Мик, Вы писали:
РМ>Но если основной поток "повис" на мьютексе, то стектрейс состоит из всего двух записей:
РМ>
Похоже не на мьютекс, а на epoll сокетов, очевидно.
РМ>Можно ли как-то узнать стек самого блокирующего вызова?
Возможно, какая-то из библиотек или программа собраны без отладочной информации, или без stack-frame pointers.
Вообще, такое печать стеков может systemtap. Это печатать стеков при всех вызовах функции, но если небольшым скриптом можно учесть изменение переменной по таймауту.
РМ>Но если основной поток "повис" на мьютексе, то стектрейс состоит из всего двух записей:
РМ>
РМ>000: 0x9c1ac /apex/com.android.runtime/lib/bionic/libc.so __epoll_pwait
РМ>001: 0x6df9c /apex/com.android.runtime/lib/bionic/libc.so epoll_wait
РМ>
Похоже не на мьютекс, а на epoll сокетов, очевидно.
РМ>Можно ли как-то узнать стек самого блокирующего вызова?
Возможно, какая-то из библиотек или программа собраны без отладочной информации, или без stack-frame pointers.
Вообще, такое печать стеков может systemtap. Это печатать стеков при всех вызовах функции, но если небольшым скриптом можно учесть изменение переменной по таймауту.
Re: Определение стека потока, который стоит на мьютексе
Здравствуйте, Рома Мик, Вы писали:
РМ>Но если основной поток "повис" на мьютексе, то стектрейс состоит из всего двух записей:
РМ>
Похоже не на мьютекс, а на epoll сокетов, очевидно.
РМ>Можно ли как-то узнать стек самого блокирующего вызова?
Возможно, какая-то из библиотек или программа собраны без отладочной информации, или без stack-frame pointers.
Вообще, печать стеков может systemtap. Это печатать стеков при всех вызовах функции, но небольшым скриптом можно учесть изменение переменной по таймауту.
РМ>Но если основной поток "повис" на мьютексе, то стектрейс состоит из всего двух записей:
РМ>
РМ>000: 0x9c1ac /apex/com.android.runtime/lib/bionic/libc.so __epoll_pwait
РМ>001: 0x6df9c /apex/com.android.runtime/lib/bionic/libc.so epoll_wait
РМ>
Похоже не на мьютекс, а на epoll сокетов, очевидно.
РМ>Можно ли как-то узнать стек самого блокирующего вызова?
Возможно, какая-то из библиотек или программа собраны без отладочной информации, или без stack-frame pointers.
Вообще, печать стеков может systemtap. Это печатать стеков при всех вызовах функции, но небольшым скриптом можно учесть изменение переменной по таймауту.