Skip to content

asm_sysvec_apic_timer_interrupt attributed wrongly to arbitrary stack trace? #710

Answered by jfrantzius
jfrantzius asked this question in Q&A
Discussion options

You must be logged in to vote

OK, I now caught two of the three candidates in the same flamegraph. Previously it was always only one of them, and that's what I found so suspicious.

It turns out that all three candidates are somewhere close to volatile field accesses that prevent CPU register and cache usage, which explains the long bars without further details in the flamegraphs:

  • lvProducerLimit() - returns a volatile field
  • LongAdder.add() - ends up in VarHandle.compareAndSet() , which has memory semantics of setVolatile()
  • spRefElement() - its invocation in poll() is followed by soConsumerIndex() that ends up in Unsafe.putOrderedLong() , which behaves like volatile field access

@franz1981 pointed out that it is due …

Replies: 6 comments 4 replies

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
1 reply
@franz1981
Comment options

Comment options

You must be logged in to vote
3 replies
@franz1981
Comment options

@jfrantzius
Comment options

@franz1981
Comment options

Comment options

You must be logged in to vote
0 replies
Answer selected by jfrantzius
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
3 participants