poradziłem sobię, wystarczyło zmienić g++-6 na g++4.9
Jak ty tak naprawiasz błędy to współczuje twojemu pracodawcy (przyszłemu lub obecnemu).
Nadal masz błąd w kodzie, ale zmiana kompilatora spowodowała, że błąd na twoim komputerze nie przynosi tragicznego skutku od razu.
Wystarczy, że u użytkownika, będzie inna biblioteka, inne CPU, inna wielkość strony, inna dystrybucja, albo inna faza księżyca, a będzie odtwarzał tego crasha w 100% przypadków.
Ty tylko zamiotłeś problem pod dywan.
Do wykrywania takich rzeczy są narzędzia, już ci pisałem, żebyś spróbował AdressSanitizer-a (opcja kompilatora, która buduje kod z dodatkowymi mechanizmami sprawdzającymi poprawność kodu). To jest naprawdę super narzędzie, generujące bardzo dokładne raporty co jest źle.
Narzędzie to łapie te błędy, bez względu czy doprowadzą do crash-a, czy nie.
Jeśli możesz używać Clang to on ma jeszcze inne Sanitizer-y, które też warto spróbować.
Inna alternatywa to valgrind, który wymaga tylko wersji debug, jest wolniejszy i mniej precyzyjny, ale też pozwala na wykrywanie takich błędów.
Ja zwykle używam Mac OS i Xcode jest dobrze zintegrowany z clang, więc użycie tych narzędzi tam jest banalnie proste (nie wiem jak to wygląda na Linux).