Pufferüberlaufprüfung für Boehm GC

Ich benutze Boehm GC und Valgrind.

Aber es scheint, dass Valgrind einen Überlauf in GC_malloc'ed-Puffern nicht erkennen kann.

Kennt jemand Tools, die einen Pufferüberlauf für Boehm GC erkennen können?

Der Programmierer? Ihr Code sollte die Puffergrenzen überprüfen, bevor er in diesen Puffer schreibt, anstatt sich auf ein Tool zu verlassen, das ihn für Sie abfängt.
Und dann bräuchte es keine Tools wie Valgrind, Boehm und Co.? Willkommen in der realen Welt.
Boehm GC ist nur für Linux verfügbar, richtig? Daher entsprechen keine Windows-Tools Ihren Kriterien.
Böhm kompiliert für Windows ...

Antworten (2)

Unser CheckPointer- Tool kann möglicherweise das tun, was Sie möchten.

Sie haben nicht ausdrücklich gesagt, wie Valgrind gescheitert ist, nur dass es so war. Es ist bekannt, dass Valgrind bestimmte Arten von Speicherzugriffsfehlern nicht erkennen kann. Es kann sicherlich keine Pufferüberläufe für einen Puffer innerhalb einer Struktur oder einen Puffer erkennen, der im lokalen Stack-Speicherplatz zugewiesen ist, da es keine Kenntnis von der Größe dieser Puffer hat. Der Bereich um den Puffer herum ist per Definition gültiger Datenraum, und daher sind Zugriffe aus Sicht von Valgrind "gültig", auch wenn sie sich außerhalb des Pufferrands befinden.

Im Gegensatz dazu liest CheckPointer Ihren C-Quellcode und sammelt Informationen über die Datentypen (und damit deren Größe). Dadurch erhält es die Schlüsselinformationen, die für diese Erkennung erforderlich sind. Nach dem Sammeln von Typinformationen instrumentiert es dann den Code, um nach Fehlern beim Speicherzugriff zu suchen. Es wird die oben genannten Fehler und eine Vielzahl anderer abfangen.

CheckPointer ist derzeit nur für C verfügbar.

Dies ist ein Produkt meiner Firma, also verstehen Sie dies nicht als Empfehlung. Ich dokumentiere lediglich, dass es existiert und anscheinend Ihren Anforderungen entspricht.

Wenn Sie GC_DEBUG zuvor definieren, #include "gc.h"führt es einige Überprüfungen durch, einmal pro Sammlung überprüft es bekannte Objekte, um zu sehen, ob sie gehämmert aussehen oder nicht. Ich finde...

Referenzen:

https://stackoverflow.com/q/4532825/32453

https://github.com/ivmai/bdwgc/blob/master/tests/smash.c

https://github.com/ivmai/bdwgc "Debugging-Möglichkeiten"