GNU/Linux >> Znalost Linux >  >> Linux

Podivná chyba segmentace SIGSEGV v metodě std::string::assign() z libstdc++.so.6

Myslím, že by mohl být nějaký problém uvnitř FormatTimeStamp funkce, ale bez zdrojového kódu těžko něco říct. Zkuste zkontrolovat svůj program pod Valgrind. Obvykle to pomůže opravit takový druh chyb.


Existují dvě pravděpodobné možnosti:

  • některý kód před řádkem 798 poškodil místní tmpTimeStamp objekt
  • vrácená hodnota z FormatTimeStamp() byl nějak špatný.

_GLIBCXX_FULLY_DYNAMIC_STRING je s největší pravděpodobností červený sleď a nemá s tímto problémem nic společného.

Pokud si nainstalujete debuginfo balíček pro libstdc++ (Nevím, jak se tomu říká na CentOS), budete moci do tohoto kódu „vidět“ a možná budete schopni říct, zda levá strana (LHS) nebo RHS operátora přiřazení způsobila problém.

Pokud to není možné, budete to muset odladit na úrovni sestavení. Přechod do rámce #2 a provedete x/4x $ebp by vám měl poskytnout předchozí ebp , adresa volajícího (0x081402fc ), LHS (měl by odpovídat &tmpTimeStamp v rámci #3 ) a RHS. Jděte odtud a hodně štěstí!


Linux
  1. Uniknout neznámým znakům z řetězce pro -exec?

  2. Manipulovat {} Vrátit řetězec z Find -exec?

  3. Linux:existuje čtení nebo recv ze socketu s časovým limitem?

  1. Nejjednodušší způsob, jak najít chybu segmentace

  2. Existuje nějaká metoda pro spuštění perf pod WSL?

  3. Existuje způsob, jak získat procento na DD v linuxu?

  1. Bash skriptování:Přesun z operátoru backtick do závorek $

  2. Linux networking - Podivný malý problém s DNS, DHCP

  3. Konfigurační test Apache2 se nezdařil:Chyba segmentace (vyřazení jádra) [Vyřešeno]