gdb: Impossible de trouver de nouveaux threads: erreur générique

Lorsque je lance GDB contre un programme qui charge Un. so qui est lié à pthreads, GDB signale une erreur "Impossible de trouver de nouveaux threads: erreur générique".

Notez que l'exécutable que j'exécute n'est pas lié à pthreads.

Des indices?

$ gdb --args lua -lluarocks.require
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/lua...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/lua -lluarocks.require
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require 'ev'
[Thread debugging using libthread_db enabled]
Cannot find new threads: generic error
(gdb) q
A debugging session is active.

    Inferior 1 [process 4986] will be killed.

Quit anyway? (y or n) y

Cette fonction est appelée sur require 'ev':

Http://github.com/brimworks/lua-ev/blob/master/lua_ev.c#L25-65

Informations supplémentaires sur mon système:

$ uname -a
Linux localhost 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 04:38:19 UTC 2010 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic
26
demandé sur Alexander Gladysh 2010-04-24 03:56:07

6 réponses

Cela fonctionne aussi:

LD_PRELOAD = / lib / libpthread. so. 0 gdb --args ./ app

29
répondu ensonic 2010-11-02 16:01:46

Les utilisateurs D'Ubuntu 64 bits devraient faire ceci:

LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0 gdb --args ./app
27
répondu Brian 2011-05-20 22:24:31

Vous pouvez aussi créer un .gdbinit dans votre répertoire contenant ce texte:

set env LD_PRELOAD /lib/libpthread.so.0
14
répondu jbaylina 2011-06-07 12:16:08

Il semble que GDB n'aime pas quand l'application "soudainement" devient dépendante de pthreads.

La seule solution que j'ai trouvée est de lier l'application hôte avec pthreads.

Ce qui est plutôt triste...

6
répondu Alexander Gladysh 2010-04-29 14:09:05

J'ai trouvé que gdb peut s'attacher au processus une fois la liaison d'exécution à la bibliothèque pthreads terminée.

5
répondu Gearoid Murphy 2010-09-29 17:43:04

" si vous ajoutez flag-lpthread à gcc (ou G++) tout en reliant votre application à déboguer, le problème disparaît." Source

2
répondu Stas Yak 2013-09-03 15:18:55