帮助客户解决他们遇到的问题.我更像是一个系统管理员/ DBA人,所以我正在努力帮助他们.他们说这是内核/环境中的一个错误,我试图证明或反驳它之前我坚持认为它是在他们的代码中或寻求供应商支持操作系统.
发生在Red Hat和Oracle Enterprise Linux 5.7(和5.8)上,应用程序是用C++编写的
他们遇到的问题是主线程启动一个单独的线程来执行可能长时间运行的TCP connect()[客户端连接到服务器].如果"长时间运行"方面花费的时间太长,它们会取消线程并启动另一个线程.
这样做是因为我们不知道服务器程序的状态:
问题是取消锁定互斥锁的线程(清理处理程序设置为解锁互斥锁)有时不解锁互斥锁.
这使得主线程试图锁定互斥锁.
详细环境信息:
代码是使用以下代码构建的:c ++ -g3 tst2.C -lpthread -o tst2
非常感谢任何建议和指导