PySCIPOpt 经常被分段错误 (SIGSEGV) 中断
PySCIPOpt is frequently interrupted by segmentation fault (SIGSEGV)
我想调试一个涉及 pyscipopt 和约束处理程序的 Python 程序,但我经常遇到分段错误。
我将 cppgdb 进程附加到主 Python 调试器,如 this。
我注意到在优化过程中我有几个 gdb 线程 运行,其中一个打印出最佳解决方案,然后在出现异常时暂停:
python3: /home/avrech/scipoptsuite-6.0.2/scip/src/scip/debug.c:2029: SCIPcheckStage: Assertion `scip != NULL' failed.
另一个只是退出 Segmentation fault (core dumped)
,没有其他信息。
我想了解它发生的原因,并找到避免此异常的解决方法。
我有一些假设,它与 SCIP 内部线程和共享内存有关,该内存由一个线程释放,然后由另一个线程访问。但是,我不知道如何评价它。
也许禁用多线程将有助于测试它?更重要的是无一例外地调试 SCIP?
总结一下我的问题:
1. exception/segfault 的原因是什么?
2、如何避免?
3.如果有的话,如何禁用SCIP多线程?
谢谢
很遗憾,我不知道问题1和2的答案,但是关于问题3:SCIP不使用多线程,所以你的问题不在那里。
我想调试一个涉及 pyscipopt 和约束处理程序的 Python 程序,但我经常遇到分段错误。
我将 cppgdb 进程附加到主 Python 调试器,如 this。 我注意到在优化过程中我有几个 gdb 线程 运行,其中一个打印出最佳解决方案,然后在出现异常时暂停:
python3: /home/avrech/scipoptsuite-6.0.2/scip/src/scip/debug.c:2029: SCIPcheckStage: Assertion `scip != NULL' failed.
另一个只是退出 Segmentation fault (core dumped)
,没有其他信息。
我想了解它发生的原因,并找到避免此异常的解决方法。
我有一些假设,它与 SCIP 内部线程和共享内存有关,该内存由一个线程释放,然后由另一个线程访问。但是,我不知道如何评价它。 也许禁用多线程将有助于测试它?更重要的是无一例外地调试 SCIP?
总结一下我的问题: 1. exception/segfault 的原因是什么? 2、如何避免? 3.如果有的话,如何禁用SCIP多线程?
谢谢
很遗憾,我不知道问题1和2的答案,但是关于问题3:SCIP不使用多线程,所以你的问题不在那里。