Re: Making the hardcoded string length limit of Throwable->getTraceAsString() configurable
| From: | tyson andre | Date: | Thu, 25 Jun 2020 13:34:10 +0000 |
| Subject: | Re: Making the hardcoded string length limit of Throwable->getTraceAsString() configurable | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-110727@lists.php.net to get a copy of this message | ||
> > Why is there a 15 byte limit in the first place?
>
> Presumably it might be so that multi-megabyte strings are not dumped
> to the console when printing out a stack trace. (Disclaimer: I have
> not touched the relevant code and am just guessing.)
It apparently dates back to 2003, when exception::getTraceAsString() was first added.
https://github.com/php/php-src/commit/c80eb4573f8cbc268463c7ec233b467bd9b36b0f#diff-16cc0fb22dbf90c4c465180255880ea0R167
Arguably, computers have more disk space and better processors.
The reasons I can think of to keep a low default limit:
- Syslogs might use udp for async logging, which has a limit of 4096 bytes or so, which hasn't
changed
- Code might truncate before logging an exception, and shorter argument representations would allow
logging more frames of the stack trace
- Code might log exceptions to disk during abnormal events (e.g. network outages), and too high of a
default would fill up disks faster
- CLI apps might fill up the entire screen or terminal scrollback buffer with megabyte-long strings
(e.g.
string $file_contents)
- Tyson