diff options
author | rock.yeh <app1_test@weckout.com> | 2016-12-23 15:11:13 +0800 |
---|---|---|
committer | rock.yeh <app1_test@weckout.com> | 2017-01-09 01:48:01 +0000 |
commit | 35af2ad461e9745252bdc2c1c5a0cad1386626d4 (patch) | |
tree | 9ce6b0191a6ea443047aa534d4f0594c76c83941 /compiler/optimizing/graph_visualizer.cc | |
parent | c51c7ca7a779563d153c137c6bf01c3ea532a6c9 (diff) |
Use relative futex timeout in SuspendAllInternal.
This erroneously used an absolute timeout for FUTEX_WAIT, potentially
causing it to block for MUCH longer than 10 seconds.
http://man7.org/linux/man-pages/man2/futex.2.html
Note: for FUTEX_WAIT, timeout is interpreted as a relative value.
Error case:
kernel time: 15842.476344
nsec: 31694950164731
12-22 20:25:48.020043 0 0 F [15842.476344][HeapTaskDaemon:3008]
futex_wait 00000070fcdf8980 1 1 31694950164731
Normal case:
kernel time: 15842.476344
nsec: 15842476344
Block backtrace:
"HeapTaskDaemon" sysTid=3008
#00 pc 000000000001bcac /system/lib64/libc.so (syscall+28)
#01 pc 0000000000461db0 /system/lib64/libart.so
(_ZN3art10ThreadList18SuspendAllInternalEPNS_6ThreadES2_S2_b+720)
#02 pc 000000000046249c /system/lib64/libart.so
(_ZN3art10ThreadList10SuspendAllEPKcb+532)
#03 pc 00000000001e8fc8 /system/lib64/libart.so
(_ZN3art2gc9collector9MarkSweep9RunPhasesEv+232)
#04 pc 00000000001e1694 /system/lib64/libart.so
(_ZN3art2gc9collector16GarbageCollector3RunENS0_7GcCauseEb+332)
#05 pc 0000000000211500 /system/lib64/libart.so
(_ZN3art2gc4Heap22CollectGarbageInternalENS0_9collector6GcTypeENS0_7Gc
CauseEb+3048)
#06 pc 0000000000218acc /system/lib64/libart.so
(_ZN3art2gc4Heap12ConcurrentGCEPNS_6ThreadEb+124)
#07 pc 000000000021fbf4 /system/lib64/libart.so
(_ZN3art2gc4Heap16ConcurrentGCTask3RunEPNS_6ThreadE+36)
This is a fix patch log and each timeout log interval of 10 seconds:
12-27 03:27:46.153744 1631 1713 E art : Unexpected time out during
suspend all.
12-27 03:27:56.154401 1631 1713 E art : Unexpected time out during
suspend all.
12-27 03:28:06.154956 1631 1713 E art : Unexpected time out during
suspend all.
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions