我有一个奇怪的问题,我在Amazon AMI Linux实例上运行glassfish 3.1.2.2,服务器在大约两周内运行得很好,但很快就会死掉。server.log中没有关于它的任何东西,前一分钟它还像正常一样服务于请求,下一分钟整个过程就消失了。我已经检查了操作系统日志,比如/var/log/messages。特别是,我一直在寻找oom杀手,因为我的一个想法是,进程是因为使用了大量内存或其他原因而被收割的,但在日志中没有任何关于终止进程的内容。有没有人有任何办法来追踪这个问题?
我遇到了一种罕见的但反复发生的种族状况。该程序有两个线程,并使用std::原子。我将简化代码的关键部分,如下所示:
std::atomic<uint64_t> b; // flag, initialized to 0
uint64_t data[100]; // shared data, initialized to 0
线程1(发布):
// set various shared variables here, for example
data[5] = 10;
uint64_t a = b.exchange(1); // signal to thread 2 that