diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-04-13 17:50:45 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-04-13 17:50:45 -0400 |
commit | f7e07777e033e580351dc6886ab7dbdddd9839fe (patch) | |
tree | 07c4878e3eaf77801d5104c2f6c498cfff9e3bbd /runtime/print.c | |
parent | a9f3ab125303a2e89dd3c17b39f26e1d2c428fa5 (diff) | |
download | systemtap-steved-f7e07777e033e580351dc6886ab7dbdddd9839fe.tar.gz systemtap-steved-f7e07777e033e580351dc6886ab7dbdddd9839fe.tar.xz systemtap-steved-f7e07777e033e580351dc6886ab7dbdddd9839fe.zip |
runtime backtrace: stop infinite loops by checking for full print buffer
2008-04-13 Frank Ch. Eigler <fche@elastic.org>
* print.c (_stp_pbuf_full): New function to note full print buffer.
* stack-{i386,x86_64}.c: Use it in all stack-searching loops, to
impose another limit against unbounded iteration.
Diffstat (limited to 'runtime/print.c')
-rw-r--r-- | runtime/print.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/runtime/print.c b/runtime/print.c index 0442ba09..4f99be7b 100644 --- a/runtime/print.c +++ b/runtime/print.c @@ -243,6 +243,16 @@ void _stp_print_char (const char c) pb->len ++; } +/** Check whether the print buffer is full. + * @return non-zero if full + */ + +static int _stp_pbuf_full (void) +{ + _stp_pbuf *pb = per_cpu_ptr(Stp_pbuf, smp_processor_id()); + return (pb->len >= STP_BUFFER_SIZE); +} + /* This function is used when printing maps or stats. */ /* Probably belongs elsewhere, but is here for now. */ |