Moja aplikacja segfault czasami i głównie w malloc() i malloc_consolidate(), gdy patrzę na backtrace w gdb.Segfaults w malloc() i malloc_consolidate()
Sprawdziłem, czy maszyna ma wystarczającą ilość pamięci, że nawet nie zaczęła się zamiana. Sprawdziłem ulimity na segregację danych i maksymalny rozmiar pamięci i oba są ustawione na "bez ograniczeń". Ja również uruchomiłem aplikację pod valgrind i nie znalazłem żadnych błędów pamięci.
Teraz nie mam pomysłów, co jeszcze może powodować te uszkodzenia. Jakieś pomysły ?
Aktualizacja: Ponieważ nie jestem znalezienie czegokolwiek z valgrind (lub ptrcheck), to może być to, że inna aplikacja koszu strukturę pamięci LibC lub jest tam oddzielny struktura dla każdego procesu?
Czy zdarzyło Ci się zderzyć pod wiatrem? –
Nie, nie zawiesił się. Jest to aplikacja działająca w czasie rzeczywistym i pod obciążeniem mogącym obciążać ją tylko nieznacznie i zwykle tylko przy większym obciążeniu. –
Jaki to system operacyjny? Sądząc po toolchainzie, brzmi to tak, jakby to był Linux. W tym przypadku nie, inne aplikacje nie mogą wyrzucić śmieci; to coś w twojej aplikacji. Jeśli dzieje się to tylko pod obciążeniem, to oczywiście jest to bardziej skomplikowane ... Co różni się pod obciążeniem? Jak to może spowodować, że wyrzucisz stertę? Spróbuj "torturować" swoją aplikację najlepiej jak potrafisz, gdy działa pod Valgrind ... jak najlepiej odtworzyć warunki, które mogłyby istnieć pod obciążeniem? Może za darmo przydzielić pamięć, coś w tym stylu? –