V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amiwrong123
V2EX  ›  Android

[救救孩子]gtest 测试框架总是报错 pthread_mutex_destroy called on a destroyed mutex,该咋整啊

  •  
  •   amiwrong123 · 2020-02-28 11:51:40 +08:00 · 7012 次点击
    这是一个创建于 1525 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实每次跑完测试,测试用例都是跑完了的,但是最后 googletest 最后的返回码总是 134 (不是 0,0 就是代表没有任何问题,返回不是 0,就不能生成报告)。 具体就是:

    //前面单个测试用例都是跑完没有出错的
    
    03:00:20 [----------] Global test environment tear-down
    03:00:20 [==========] 200 tests from 8 test cases ran. (6000 ms total)
    03:00:20 [  PASSED  ] 200 tests.
    
    googletest 返回 134
    
    

    墓碑:

    1582860768(1)

    其实知道是自己写的 unit test 代码有问题,但是又有点无从下手。代码有用到公司自己封装的消息队列,里面好像确实有互斥锁的使用,感觉可能是这里的问题。

    1. 感觉可能是 Global test environment tear-down 时,出了问题
    2. 这个 pthread_mutex_destroy called on a destroyed mutex 这个错误到底是什么原理啊

    求各位大佬给点启发,现在脑袋都想爆了。。

    5 条回复    2020-03-09 21:22:06 +08:00
    catror
        1
    catror  
       2020-02-28 12:14:27 +08:00 via Android
    这个错误提示不是挺直观的嘛,重复销毁了 mutex
    amiwrong123
        2
    amiwrong123  
    OP
       2020-02-28 12:20:33 +08:00 via Android
    @catror 也是哈,但正常运行代码都没问题,就单元测试时有问题,说明单元测试重复销毁了锁呗
    lcdtyph
        3
    lcdtyph  
       2020-02-28 12:27:21 +08:00 via iPhone
    gtest 什么版本啊,我记得旧版有个 bug,需要你在退出前手动释放 static 变量的内存(比如 shared_ptr::reset ),不然就会报错。
    catror
        4
    catror  
       2020-02-28 12:27:54 +08:00 via Android
    @amiwrong123 如果是释放资源的问题,要看你正常运行代码的时候,有没有正常结束进程。
    LvZZY
        5
    LvZZY  
       2020-03-09 21:22:06 +08:00
    int main(int argc, char ** argv) {
    printf("main In...\n");
    // testing::InitGoogleTest(&argc, argv);
    //testing::InitGoogleMock(&argc, argv);
    // printf("return In...\n");
    // printf(" main thread pid :%d, tid : %d\n", getpid(), gettid());
    // return RUN_ALL_TESTS();
    return 0;
    }

    我这么写,也出现了这个问题,可以帮忙看下可能是什么原因吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2231 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:30 · PVG 13:30 · LAX 22:30 · JFK 01:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.