我在一台装有 Ubuntu 12.04.2 LTS 和 Linux 3.2.0-101 内核的服务器上的一个进程上遇到了一个错误,该错误似乎与 futex 有关。
strace 是:
futex(0x25436a4, FUTEX_WAIT_BITSET_PRIVATE, 1897, {8720249, 429576138}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
futex(0x2543718, FUTEX_WAKE_PRIVATE, 1) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 430115772}) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 430246316}) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 430343247}) = 0
futex(0x25436a4, FUTEX_WAIT_BITSET_PRIVATE, 1899, {8720249, 930343247}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
futex(0x2543718, FUTEX_WAKE_PRIVATE, 1) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 930688684}) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 930799335}) = 0
clock_gettime(CLOCK_MONOTONIC, {8720249, 930887869}) = 0
futex(0x25436a4, FUTEX_WAIT_BITSET_PRIVATE, 1901, {8720250, 430887869}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
futex(0x2543718, FUTEX_WAKE_PRIVATE, 1) = 0
已找到修复方法,可在此处查看https://github.com/torvalds/linux/commit/76835b0ebf8a7fe85beb03c75121419a7dec52f0
我找不到此补丁是否已在 Ubuntu 12.04.2 LTS 和 Linux 3.2.0-xxx 内核上反向移植。
谢谢。
答案1
首先,12.04.2 已过期,可能不再受支持。
但是,这可能会有所帮助(并且很通用):阅读更改日志。
apt-get changelog linux-image-$(uname -r)
apt-get changelog linux-image-extra-$(uname -r)