Summary: | Valgrind hangs in pthread_spin_lock consuming 100% CPU | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Sujith Gunawardhane <sujithsg> |
Component: | general | Assignee: | Julian Seward <jseward> |
Status: | CLOSED FIXED | ||
Severity: | normal | CC: | josef.weidendorfer, mark, sage |
Priority: | NOR | ||
Version: | 3.9.0 | ||
Target Milestone: | --- | ||
Platform: | RedHat Enterprise Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Sujith Gunawardhane
2014-06-19 11:20:20 UTC
Try with --fair-sched=yes. Thanks Julian for the response. It behaves the same even with --fair-sched=yes as well. I can reproduce that. Hmm. Even with an unfair scheduling, one thread should progress. As running with callgrind, the code worked, I tried with "--vex-guest-chase-thresh=0". That works, too... With "--vex-guest-chase-thresh=1" it hangs again. The loop in the spinlock is simple: loop: pause cmpl $0x0, ($rdi) jg out jmp loop Josef I can replicate this against current valgrind svn. A -v -v --trace-sched=yes run ends with: --22512-- SCHED[2]: acquired lock (VG_(client_syscall)[async]) --22512-- SCHED[2]: TRC: SYSCALL --22512-- SCHED[2]: releasing lock (VG_(client_syscall)[async]) -> VgTs_WaitSys 8 --22512-- SCHED[2]: acquired lock (VG_(client_syscall)[async]) --22512-- SCHED[2]: TRC: SYSCALL --22512-- SCHED[2]: releasing lock (VG_(client_syscall)[async]) -> VgTs_WaitSys 9 --22512-- SCHED[3]: acquired lock (thread_wrapper(starting new thread)) --22512-- SCHED[3]: entering VG_(scheduler) --22512-- SCHED[3]: TRC: SYSCALL --22512-- SCHED[3]: TRC: CHAIN_ME_FAST --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: FASTMISS --22512-- SCHED[3]: TRC: CHAIN_ME_FAST --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD --22512-- SCHED[3]: TRC: YIELD [... repeated forever ...] And indeed using vex-guest-chase-thresh=0 makes it work. I can also reproduce this. This is totally bizarre. Investigating. Fixed, r14386. This is ok now. Tested in 3.10 beta path. *** Bug 339537 has been marked as a duplicate of this bug. *** |