Pergunta

Eu tenho um programa que traz e derruba vários fios ao longo de sua vida. Tudo funciona muito bem por um tempo, mas, eventualmente, eu recebo o seguinte rastreamento de pilha de despejo central.

#0  0x009887a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x007617a5 in raise () from /lib/tls/libc.so.6
#2  0x00763209 in abort () from /lib/tls/libc.so.6
#3  0x003ec1bb in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#4  0x003e9ed1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
#5  0x003e9f06 in std::terminate () from /usr/lib/libstdc++.so.6
#6  0x003ea04f in __cxa_throw () from /usr/lib/libstdc++.so.6
#7  0x00d5562b in boost::thread::start_thread () from /h/Program/bin/../lib/libboost_thread-gcc34-mt-1_39.so.1.39.0

No começo, eu estava vazando fios e imaginei que o núcleo se devia ao atingir um limite máximo de número de roscas atuais, mas agora parece que esses problemas ocorrem mesmo quando eu não o fizer. Para referência, no núcleo acima, havia 13 threads ativos executando.

Eu fiz algumas pesquisas para tentar descobrir por que o Start_Thread iria núcleo, mas não encontrei nada. Alguém tem alguma ideia?

Foi útil?

Solução

start_thread está lançando uma exceção não capturada, veja quais exceções podem start_thread Jogue e coloque um catch Em torno dele para ver qual é o problema.

Outras dicas

Quais são os valores transportados por thread_resource_error? Parece que você pode ligar para o nativo_error () para descobrir.

Como este é um invólucro em torno do Pthreads, existem apenas algumas possibilidades - Eagin, Einval e Eperm. Parece que o Boost tem exceções, provavelmente jogaria para Einval e EPERM - ou seja, não suportado_thread_option () e Thread_permission_error ().

Isso praticamente deixa o EAGIN, então eu veria que você realmente não está excedendo os limites do sistema no número de threads. Você tem certeza de que está se juntando a eles ou, se destacados, eles realmente se foram?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top