Summary: | vim hangs in signal handler | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry V. Levin <ldv> |
Component: | vim-enhanced | Assignee: | Gleb F-Malinovskiy <glebfm> |
Status: | CLOSED WONTFIX | QA Contact: | qa-sisyphus |
Severity: | critical | ||
Priority: | P4 | CC: | admsasha, glebfm, ldv, vsu |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitry V. Levin
2003-01-16 19:41:26 MSK
I have understood what is happening here. By default the LinuxThreads library finds the current thread descriptor by the stack pointer value. However, vim sets up an alternate signal stack, therefore pthread_self() gets some bogus address instead of the thread descriptor. This does not happen with glibc-core-i686, because it uses a different method for finding the current thread descriptor. So this is really a glibc problem - sigaltstack() does not work with the default implementation of libpthread. I have understood what is happening here. By default the LinuxThreads library finds the current thread descriptor by the stack pointer value. However, vim sets up an alternate signal stack, therefore pthread_self() gets some bogus address instead of the thread descriptor. This does not happen with glibc-core-i686, because it uses a different method for finding the current thread descriptor. So this is really a glibc problem - sigaltstack() does not work with the default implementation of libpthread. It's glibc problem - not vim. Unable to reproduce with glibc-2.3.3+, looks like fixed. |