Comment 18 for bug 1183065

Revision history for this message
Michael Zanetti (mzanetti) wrote :

This is 100% reproducable for me on the Nexus 4 (strangely not so much on the Galaxy Nexus). At latest after 3 hours of uptime unity8 goes crazy with around 70% CPU usage.

Here's the strace output of unity8 while this happens.

read(3, "\2\0\0\0\0\0\0\0", 16) = 8
futex(0x2c481c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2c4818, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2c4800, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c4644, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c481c, FUTEX_WAIT_PRIVATE, 1469943, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2c4800, FUTEX_WAKE_PRIVATE, 1) = 0
clock_gettime(CLOCK_MONOTONIC, {15457, 541909444}) = 0
clock_gettime(CLOCK_MONOTONIC, {15457, 542214648}) = 0
poll([{fd=3, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=34, events=POLLIN}, {fd=35, events=POLLIN}, {fd=45, events=POLLIN}, {fd=43, events=POLLIN}], 7, -1) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16) = 8
futex(0x2c481c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2c4818, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2c4800, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c4644, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c4800, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c4818, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x2c481c, FUTEX_WAIT_PRIVATE, 1469947, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x2c4800, FUTEX_WAKE_PRIVATE, 1) = 0
clock_gettime(CLOCK_MONOTONIC, {15457, 564097757}) = 0
clock_gettime(CLOCK_MONOTONIC, {15457, 564494521}) = 0
poll([{fd=3, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=34, events=POLLIN}, {fd=35, events=POLLIN}, {fd=45, events=POLLIN}, {fd=43, events=POLLIN}], 7, -1) = 1 ([{fd=3, revents=POLLIN}])

This block, here listed twice, is repeated over and over in full speed. 2 minutes of stracing created 16M of output repeating this block.

Looks like unity tries to read form a file descriptor (3) which is not available any more.
lrwx------ 1 phablet phablet 64 Jul 28 10:27 /proc/690/fd/3 -> anon_inode:[eventfd]

Attaching gdb and interrupting it does not give any thing useful.

Any other hints how to debug this further?