Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Brak możliwości zalogowania się do gry - wycieki pamięci - malloc(): unsorted double linked list corrupted

Ostatnio zmodyfikowano 2021-12-05 11:00
Autor Wiadomość
dunno
Temat założony przez niniejszego użytkownika
Brak możliwości zalogowania się do gry - wycieki pamięci - malloc(): unsorted double linked list corrupted
» 2021-12-02 20:02:11
Posiadam skompilowany na Debian10 silnik gry mmorpg, z uwagi na wiek aplikacji posiada on sporo błędów.
Występują wycieki pamięci które powodują błędy/crashe i aplikacja zamyka się niespodziewanie - w załączeniu logi z gdb
z błędem "malloc(): unsorted double linked list corrupted".

Logi gdb: http://www.wklejto.pl/929345.

Ponadto zdarzają się sytuacje, w których de facto nie występuje crash aplikacji, jednak jest problem z połączeniem z bazą danych - pomimo wpisania poprawnego loginu i hasła wyskakuje, że jest niepoprawny. Moim zdaniem jest to ze sobą powiązane i  problem jest związany z socketami i sygnałami sigpipe

Robiłem także testy valgrind'em w celu lokalizacji źródeł wycieku, ale sypie on tyloma błędami, że nie wiem czy ktokolwiek byłby w stanie mi pomóc go zlokalizować. W razie konieczności dołączę logi, ponadto problem ten wystepuje niespodziewanie, więc nie jestem pewny czy valgrind go wskaze, musiałby wystąpić w tym czasie.

C/C++
otserv.cpp: 475: if( IOAccountSQL::getInstance()->getPassword( accnumber, name, acc_pass ) && passwordTest( password, acc_pass ) )
   
C/C++
otserv.cpp: 611: protocol->ReceiveLoop();

Plik otserv.cpp http://www.wklejto.pl/929346.

Czy byłby ktoś w stanie pomóc rozwiązać problem w tym zakresie na forum lub poza forum?
P-179103
DejaVu
» 2021-12-03 15:03:13
Skompiluj sobie kod w debug bez optymalizacji. Wówczas będziesz widział gdzie masz problemy.
P-179104
dunno
Temat założony przez niniejszego użytkownika
» 2021-12-03 18:15:53
Dzięki za odpowiedź, ale wydaje mi się, że jest skompilowany bez optymalizacji (podaje link do makefile)
Makefile: http://www.wklejto.pl/929578.

Czy jednak coś zrobiłem niepoprawnie?
P-179105
DejaVu
» 2021-12-03 18:28:20
No symbol table info available.
#7  0xf7d22cfc in ?? () from /lib/i386-linux-gnu/libmariadb.so.3
No symbol table info available.
#8  0x565a4892 in DatabaseMySQL::storeQuery (this=0x56765f10, query="SELECT `password` FROM `accounts` WHERE `id` = 111111 LIMIT 1") at databasemysql.cpp:119
Debugger napisał Ci w callstacku/backtrace, że komunikacja z bazą powoduje Twoje problemy. Skompiluj sobie libmariadb ze źródeł to będziesz mógł ustalić dlaczego ta biblioteka się wysypuje.
P-179106
dunno
Temat założony przez niniejszego użytkownika
» 2021-12-03 19:30:47
Mógłbyś mnie nakierować w tym zakresie?
Czyli mam usunąć mariadb i skompilować w taki sposób? -> https://mariadb.com/kb/en/generic-build-instructions/.
Czy to nie o to chodzi i mam coś dodać do swojego makefile?
P-179107
DejaVu
» 2021-12-03 19:34:32
A skąd masz tą bibliotekę? Skopiowałeś ją skądś czy zainstaliwałeś za pomocą apt-get install?
P-179108
dunno
Temat założony przez niniejszego użytkownika
» 2021-12-03 19:44:25
Tak, zainstalowałem za pomocą apt-get install (niżej rozwinę to trochę)

Aplikacja sama w sobie jest pod 32 bity, używam 64-bitowego Debian 10

https://wiki.debian.org/Multiarch/HOWTO.
do kompilacji dodałem architekture 32 bitową, aby użyć bibliotek 32-bitowych:
dpkg --print-architecture
dpkg --add-architecture i386
dpkg --print-foreign-architectures

i zainstalowałem niezbędne biblioteki
apt-get update
apt-get upgrade
apt-get install gcc
apt-get install automake:i386
apt-get install liblua50-dev:i386
apt-get install liblualib50-dev:i386
apt-get install libxml++2.6-dev:i386
apt-get install libmysqlclient-dev:i386
apt-get install g++:i386
apt-get install libboost-thread1.67-dev:i386

Natomiast do poprawnego działania aplikacji niezbedna jest baza danych mysql (zazwyczaj działało bez problemu, lecz na debian10 nie mogłem zainstalowac mysql'a i zainstalowalem mariadb)
apt-get install default-mysql-client
apt-get install default-mysql-server
Defaultowy w tym przypadku był mariadb.

Czy by to oznaczało jakieś problemy z mariadb? i szukać rozwiązania probując zainstalować mysql? Czy jednak mariadb powinien być tak samo kompatybilny i wszystko powinno również na nim funkcjonować? Co powinienem zrobić aby ustalić przyczynę problemu/rozwiązać go?
P-179109
DejaVu
» 2021-12-03 19:48:19
Wystarczy dodać jedną flagę do kompilatora, aby mieć 32-bitową kompilację:
gcc -m32 example.c -o out


https://www.geeksforgeeks.org/compile-32-bit-program-64-bit-gcc-c-c/

Może po prostu aktualnie masz wymieszane biblioteki w różnej architekturze i przez to wysypuje Ci się kod?
P-179110
« 1 » 2 3
  Strona 1 z 3 Następna strona