Linux gdb导致sem_wait()失败,出现EINTR错误
从Ubuntu切换到CentOS 5.4后,我们遇到了一个奇怪的GDB行为。在调试器中运行应用程序会导致Linux gdb导致sem_wait()失败,出现EINTR错误,linux,gdb,signals,semaphore,Linux,Gdb,Signals,Semaphore,从Ubuntu切换到CentOS 5.4后,我们遇到了一个奇怪的GDB行为。在调试器中运行应用程序会导致sem_wait()返回几(5-10)次EINTR错误 我安装了最新的GDB版本,但没有解决问题。 我想这是因为GDB发送了一些信号,但我无法在信号处理程序中获得任何信息 在sem_wait()之后测试errno并恢复等待不是什么大问题,我只是想知道是否有人对这种现象有解释。您知道,在(sem_wait(&sem)=-1&&errno==EINTR)继续时,您应该(几乎)总是?@我现在是。我只
sem_wait()
返回几(5-10)次EINTR
错误
我安装了最新的GDB版本,但没有解决问题。
我想这是因为GDB发送了一些信号,但我无法在信号处理程序中获得任何信息
在
sem_wait()
之后测试errno
并恢复等待不是什么大问题,我只是想知道是否有人对这种现象有解释。您知道,在(sem_wait(&sem)=-1&&errno==EINTR)继续时,您应该(几乎)总是代码>?@我现在是。我只是好奇为什么我在Ubuntu上没有这个信号。这里的区别是什么,是内核还是glibc?您的应用程序是否在内部使用alarm()
或任何其他信号?在GDB下运行可能只是改变正在发生的事情的时间。您知道在(sem_wait(&sem)=-1&&errno==EINTR)继续时,您应该(几乎)总是代码>?@我现在是。我只是好奇为什么我在Ubuntu上没有这个信号。这里的区别是什么,是内核还是glibc?您的应用程序是否在内部使用alarm()
或任何其他信号?在GDB下运行可能只是改变正在发生的事情的时间。