Warunki przepełnienia stosu w systemie Linux

Przepełnienie stosu w systemie Linux® może być identyfikowane przez błąd SIGSEGV, chociaż wirtualna maszyna języka Java™ (VM) może zostać nieoczekiwanie zatrzymana bez wyświetlania żadnych informacji na konsoli.

Jeśli wystąpi błąd SIGSEGV, gdy nie istnieje przepełnienie stosu, informacje diagnostyczne są zapisywane w konsoli, tak jak w przykładzie w: Scenariusze, w których pliki zrzutu mogą nie być utworzone

Gdy wystąpiło przepełnienie stosu, są to dwa najbardziej prawdopodobne wyniki:
  • Plik core (core.pid) został utworzony w katalogu roboczym procesu Java.
  • Plik core nie został utworzony lub plik core został obcięty.
W pierwszym scenariuszu plik core powinien zawierać pełny zestaw wątków dla maszyny wirtualnej i może być używany wraz z przeglądarką zrzutu w celu pobrania brakujących informacji diagnostycznych. Więcej informacji na temat przeglądarki zrzutu znajduje się w sekcji Zrzut przeglądarki w dokumentacji użytkownika OpenJ9 . Pliki podstawowe będą tworzone w katalogu roboczym procesu w momencie awarii, chyba że zostanie to inaczej skonfigurowane na poziomie systemu.

Jeśli żaden plik core nie został utworzony, należy sprawdzić ustawienia systemu, aby upewnić się, że generowanie pliku core jest włączone, a następnie ponownie uruchomić aplikację. Więcej informacji na ten temat zawiera sekcja Konfigurowanie systemu w dokumentacji użytkownika OpenJ9 .

Jeśli w ustawieniach systemu włączono już generowanie pliku core, ale żaden plik core nie został utworzony, problem nie jest przepełnieniem stosu. Produkcja plików core w przypadku przepełnienia stosu powinna być identyczna z błędem SIGSEGV podczas pracy z opcją -Xrs lub opcją -Xrs:sync . Więcej informacji na ten temat zawiera sekcja -Xrs w dokumentacji użytkownika OpenJ9 .