Unpaired return instructions in Google workload traces

13 views
Skip to first unread message

York Ma

unread,
Aug 6, 2025, 6:18:16 AMAug 6
to DynamoRIO Users
I've implemented a tool with return address stack to pair each return instruction to a proceeding call instruction.
And I found that there are returns not paired with a proceeding call.
Some interesting statistics from Delta collection of Google workload traces:
  • Number of call instructions: 36503053
  • Number of return instructions: 36511116
The amount of returns is 0.02% more than the amount of calls.
Though the difference is small, I am still wondering why there are such unpaired return instructions. Does the benchmark program manipulate the stack segment to force branching to some specific service?

Derek Bruening

unread,
Aug 6, 2025, 1:04:16 PMAug 6
to York Ma, DynamoRIO Users
Signal handlers do not have an explicit call but often end in a return to the trampoline that executes the sigreturn system call which is a source of unpaired returns if you only look for explicit calls. You would need to track signals from the markers in the trace.  Also keep in mind these are not start-to-finish-application traces: these are server workloads which are attached to mid-run and then detached from.

--
You received this message because you are subscribed to the Google Groups "DynamoRIO Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dynamorio-use...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/dynamorio-users/7f159d17-38bf-4d9d-bebe-bb8aada79a3an%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages