V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
initialdp
V2EX  ›  问与答

奇怪问题: linux 多线程挂死?

  •  
  •   initialdp · 2014-12-12 11:09:04 +08:00 · 2283 次点击
    这是一个创建于 3659 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个简单的生产-消费模式的多线程程序:生产者线程将数据放入链表,通过信号量通知消费者线程取数据。现在从内部log看数据一直再放入,可是消费者线程貌似挂住,不再取数据了。线程是采用pthread库创建;信号量是采用sem_init/wait/post实现。

    诡异的地方在于: 客户是用VirtualBox跑Debian7系统才出现这个问题。我们在实体机上以及自己的VirtualBox上怎么跑都无法重新这个问题,客户虚拟机里跑两分钟就重现了。

    这该怎么破? 有什么工具可以定位一下么?谢谢。
    第 1 条附言  ·  2014-12-12 11:54:51 +08:00
    查出来了,是另外一个锁的问题。

    简单记录一下过程。其实可以直接用gdb调试。

    (1)ps查出当前程序的pid,比如1234;
    (2)直接gdb程序,比如程序是demo,则运行gdb demo 1234
    (3)用bt命令查找当前堆栈,基本上就看出当前卡在什么位置,然后就是排查的事情了。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5354 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.