diff options
| author | DJ Delorie <dj@delorie.com> | 2016-07-20 17:16:50 -0400 |
|---|---|---|
| committer | DJ Delorie <dj@delorie.com> | 2016-07-20 17:16:50 -0400 |
| commit | f214e7297413a27c5809d5f04a296e2104df1f8f (patch) | |
| tree | 389c547a7998dc4b338608017c0143e9057cfa01 /scripts/check-execstack.awk | |
| parent | f57aaed3b2fb73aa3ecc40e5afa1030681c93bf4 (diff) | |
| download | glibc-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
