Suchen

7.8. Compiler und Entwicklungswerkzeuge (Maschinenübersetzung)

download PDF

Synthetische Funktionen, die von GCC generiert werden, verwirren SystemTap

Die GCC-Optimierung kann synthetische Funktionen für teilweise inlinierte Kopien anderer Funktionen erzeugen. Tools wie SystemTap und GDB können diese synthetischen Funktionen nicht von realen Funktionen unterscheiden. Infolgedessen kann SystemTap Sonden sowohl an synthetischen als auch an realen Funktionseintrittspunkten platzieren und so mehrere Sondentreffer für einen einzigen realen Funktionsaufruf registrieren.

Um dieses Problem zu umgehen, müssen SystemTap-Skripte mit Maßnahmen wie dem Erkennen von Rekursionen und dem Unterdrücken von Sonden, die sich auf inlinierte Teilfunktionen beziehen, angepasst werden. Zum Beispiel ein Skript

probe kernel.function("can_nice").call { }

kann versuchen, das beschriebene Problem wie folgt zu vermeiden:

global in_can_nice%

probe kernel.function("can_nice").call {
  in_can_nice[tid()] ++;
  if (in_can_nice[tid()] > 1) { next }
  /* code for real probe handler */
}

probe kernel.function("can_nice").return {
  in_can_nice[tid()] --;
}

Beachten Sie, dass dieses Beispielskript nicht alle möglichen Szenarien berücksichtigt, wie z.B. verpasste Kprobes oder Kretprobes oder wirklich beabsichtigte Rekursionen.

(BZ#1169184)

Das ltraceTool meldet keine Funktionsaufrufe

Aufgrund der Verbesserungen der binären Härtung, die auf alle RHEL-Komponenten angewendet werden, kann das ltraceTool Funktionsaufrufe in Binärdateien von RHEL-Komponenten nicht mehr erkennen. Infolgedessen ist die ltraceAusgabe leer, da sie bei Verwendung in solchen Binärdateien keine erkannten Aufrufe meldet. Es ist derzeit kein Workaround verfügbar.

Als Hinweis ltracekann man Aufrufe in benutzerdefinierten Binärdateien, die ohne die entsprechenden Härtungsflags erstellt wurden, korrekt melden.

(BZ#1618748, BZ#1655368)

Red Hat logoGithubRedditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

© 2024 Red Hat, Inc.