Greatly increased GDB memory and CPU usage with newest embedded ARM toolchain

Simon Marchi simon.marchi@polymtl.ca
Mon Apr 19 01:07:37 GMT 2021


On 2021-04-17 5:30 p.m., R. Diez via Gdb wrote:
> Hi all:
> 
> I recently upgraded my cross-compilation toolchain for ARM Cortex-M4F to these component versions:
> 
>   Binutils 2.36.1
>   GCC 10.3
>   GDB 10.1
> 
> For more information, see this comment of mine:
> 
> https://sourceware.org/bugzilla/show_bug.cgi?id=23710#c18
> 
> I noticed that GDB is now using much more RAM than before, and not just for LTO builds, which is what that bug report was about.
> 
> I just tried with this open-source firmware of mine:
> 
> https://github.com/rdiez/JtagDue
> 
> For a debug build (non LTO), firmware.elf weighs around 1.5 MB. Most of it is debug information, because the firmware.bin file only weighs 76 kB.

I don't have anything useful to add.  But I was wondering if you could
share a set of commands to configure / build your project exactly like
you configure / build it yourself.  And then a set of GDB commands to do
something where you experience such a slowdown.  We could start by
trying to reproduce it, that would be a good first step to investigate
it.  To have an isolated environment that we can reproduce (make sure
GDB doesn't load some .gdbinit file), start your GDB with -nx.

> The debug information is not compressed.
> 
> When GDB needs to load the symbols, because you are touching some C++ source code, there is a noticeable pause, and GDB uses 385 MiB of RAM. Is that not too much for this smallish project?

I never really paid attention, so I can't tell.  I have noticed some
strange slowdowns recently when I debug GDB with GDB (probably a bit
bigger than your program).  For example, when I type "backtrace", there
is sometimes a noticeable pause between the display of some frames.

> I tried a release build, compiled with LTO, and GDB became unresponsive in the same situation. I killed GDB manually when it got to consume over 2 GiB of RAM, because I have had such a misbehaving GDB freeze my Ubuntu 20.04.2, not even the mouse was moving. I do not have swap, so I would have expected the Out of Memory Killer to kick in, but it did not. I had to physically switch my computer off.

Yep, that's really bad :(.

> Before I spend more time investigating this issue: is this a known problem?
> 
> The bug report mentioned above seems to suggest that there is something foul in this area, but there does not seem to be much interest in the past months. The trouble is, I am seeing now pauses and high memory usage even in non-LTO builds. GDB is still usable, but it is becoming annoying.
> 
> I have been using this toolchain for many years, and I am getting this kind of problem with GDB only relatively recently.

Do you have a version in mind that you remember worked better?  We could
compare the profiling numbers between the two versions.

Simon


More information about the Gdb mailing list