aboutsummaryrefslogtreecommitdiff
path: root/scripts/check-execstack.awk
diff options
context:
space:
mode:
authorDJ Delorie <dj@delorie.com>2016-07-20 17:16:50 -0400
committerDJ Delorie <dj@delorie.com>2016-07-20 17:16:50 -0400
commitf214e7297413a27c5809d5f04a296e2104df1f8f (patch)
tree389c547a7998dc4b338608017c0143e9057cfa01 /scripts/check-execstack.awk
parentf57aaed3b2fb73aa3ecc40e5afa1030681c93bf4 (diff)
downloadglibc-f214e7297413a27c5809d5f04a296e2104df1f8f.tar.xz
glibc-f214e7297413a27c5809d5f04a296e2104df1f8f.zip
Reschedule trace record commits to avoid inversion.
This change decouples "collecting trace data" from "allocating a trace record" so that the record can be inserted into the trace buffer in the correct sequence wrt when it "owns" the pointers being recorded (i.e. malloc should record its event after it does its allocation, but free should record its event before it returns the memory to the arena). It splits starting a trace record (function entry) with committing to the buffer (trace recording) so that path data can be accumulated easily. Trace inversion happens when one thread records a malloc, but before it can actually do the allocation, the kernel schedules a thread that free's a block, which the malloc later returns. The events are free->malloc, but the trace records are malloc->free.
Diffstat (limited to 'scripts/check-execstack.awk')
0 files changed, 0 insertions, 0 deletions