| Issue |
169899
|
| Summary |
BOLT: Assertion failed: buffer overflow, function name too large
|
| Labels |
BOLT
|
| Assignees |
|
| Reporter |
StephanDollberg
|
Hey team,
I am trying to use BOLT on Redpanda and running into the following crash/assertion:
```
[cluster] - node-1: Assertion failed: buffer overflow, function name too large
[cluster] - node-0: Assertion failed: buffer overflow, function name too large
[cluster] - node-2: Assertion failed: buffer overflow, function name too large
```
Code here: https://github.com/llvm/llvm-project/blob/1ab64e4d5f4a09846c8ab31528a3719a953650f4/bolt/runtime/instr.cpp#L614
This is using instrumented mode, the above is not happening in sampling mode but I assume the same would happen if we were lucky enough to sample the function with the large name.
This is only happening on arm (not sure whether mangling or type-info results in longer names on arm or something).
I see the buffer size is hardcoded to 10KB here: https://github.com/llvm/llvm-project/blob/main/bolt/runtime/common.h#L164
Can this be bumped? Going through blame history I see previously there was a comment acompanying this line which seems to have gotten lost:
> // We use a stack-allocated buffer for string manipulation in many pieces of
> // this code, including the code that prints each line of the fdata file. This
> // buffer needs to accomodate large function names, but shouldn't be arbitrarily
> // large (dynamically allocated) for simplicity of our memory space usage.
So I guess 5xing this or something would still be fine?
Alternatively I am wondering whether the code can be changed to not assert out but rather just drop the specific function from the profile? In all likely hood that one function doesn't make a big difference but in the current implementation the profile will just be cut short and might miss other possibly important functions.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs