3bd0 181 Posted May 22, 2020 Share Posted May 22, 2020 (edited) Hi, I spent yesterday installing FeeBSD11 and required packages to compile and run metin 2 on. and I did manage to compile source successfully with any warnings. However when I run the server, the run script keep spitting out segmentation fault and doesn't start (the db seem to start). I have no clue why. Here is the output from bt full #0 0x28bc3a87 in vtable for __cxxabiv1::__si_class_type_info () from /lib/libcxxrt.so.1 No symbol table info available. #1 0x28818d48 in __dynamic_cast () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #2 0x288b2440 in typeinfo for std::ctype_base () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #3 0x00000006 in ?? () No symbol table info available. #4 0x288b2440 in typeinfo for std::ctype_base () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #5 0x288b257c in vtable for std::ios_base::failure () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #6 0x288bc5a0 in std::cin () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #7 0xbfbfdd78 in ?? () No symbol table info available. #8 0x288b5000 in ?? () from /usr/local/lib/gcc48/libstdc++.so.6 No symbol table info available. #9 0x288bb49c in std::ctype<char>::id () I'm using the same gcc version (48), with the exact same make file on 9.2 32bit and it does compile and run successfully. Anyone have ideas? Edit: This is my game make file as well Spoiler PLATFORM = $(shell file /bin/ls | cut -d' ' -f3 | cut -d'-' -f1) GCC_VERSION = $(shell $(CC) --version 2>&1 | grep "(GCC)" | cut -d' ' -f3 | cut -d'.' -f1) BSD_VERSION = $(shell uname -v 2>&1 | cut -d' ' -f2 | cut -d'.' -f1) SVN_VERSION = 60006 CC = g++48 INCDIR = LIBDIR = BINDIR = .. OBJDIR = OBJDIR $(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi) # Standard Setting LIBS = -pthread -lm -lmd # Removed -fno-rtti CFLAGS = -w -g -Wall -O2 -m32 -std=c++11 -pipe -fexceptions -D_THREAD_SAFE -DNDEBUG -D__SVN_VERSION__=\"$(SVN_VERSION)\" ifeq ($(GCC_VERSION), 4) CFLAGS += -mtune=i686 -fstack-protector-all else CFLAGS += -march=i686 endif # boost INCDIR += -I../../../Extern/include/boost # DevIL INCDIR += -I../../libdevil LIBDIR += -L../../libdevil LIBS += -lIL -lpng -ltiff -lmng -llcms -ljpeg # MySQL ifeq ($(BSD_VERSION), 7) INCDIR += -I../../libmysql/7.x-5.1.35 LIBDIR += -L../../libmysql/7.x-5.1.35 else INCDIR += -I../../libmysql/5.x-5.1.35 LIBDIR += -L../../libmysql/5.x-5.1.35 endif LIBS += -lmysqlclient -lz # Miscellaneous external libraries INCDIR += -I../../../Extern/include LIBDIR += -L../../../Extern/lib LIBS += -lcryptopp -lgtest # HackShield INCDIR += -I../../libhackshield/include LIBDIR += -L../../libhackshield/lib LIBS += -lanticpxsvr # XTrap INCDIR += -I../../libxtrap/include # openssl #INCDIR += -I/usr/include LIBS += -lssl # Project Library INCDIR += -I../../liblua/include INCDIR += -I/usr/local/include INCDIR += -I../../libserverkey LIBDIR += -L../../libthecore/lib -L../../libpoly -L../../libsql -L../../libgame/lib -L../../liblua/lib -L../../libserverkey LIBDIR += -L/usr/local/lib LIBS += -lthecore -lpoly -llua -llualib -lsql -lgame -lserverkey USE_STACKTRACE = 0 ifeq ($(USE_STACKTRACE), 1) LIBS += /usr/local/lib/libexecinfo.a endif TARGET = $(BINDIR)/game_r$(P4_VERSION)_$(PLATFORM) CFILE = minilzo.c CPPFILE = BattleArena.cpp FSM.cpp MarkConvert.cpp MarkImage.cpp MarkManager.cpp OXEvent.cpp TrafficProfiler.cpp ani.cpp\ arena.cpp banword.cpp battle.cpp blend_item.cpp block_country.cpp buffer_manager.cpp building.cpp castle.cpp\ char.cpp char_affect.cpp char_battle.cpp char_change_empire.cpp char_horse.cpp char_item.cpp char_manager.cpp\ char_quickslot.cpp char_resist.cpp char_skill.cpp char_state.cpp PetSystem.cpp cmd.cpp cmd_emotion.cpp cmd_general.cpp\ cmd_gm.cpp cmd_oxevent.cpp config.cpp constants.cpp crc32.cpp cube.cpp db.cpp desc.cpp\ desc_client.cpp desc_manager.cpp desc_p2p.cpp dev_log.cpp dungeon.cpp empire_text_convert.cpp entity.cpp\ entity_view.cpp event.cpp event_queue.cpp exchange.cpp file_loader.cpp fishing.cpp gm.cpp guild.cpp\ guild_manager.cpp guild_war.cpp horse_rider.cpp horsename_manager.cpp input.cpp input_auth.cpp input_db.cpp\ input_login.cpp input_main.cpp input_p2p.cpp input_teen.cpp input_udp.cpp ip_ban.cpp\ item.cpp item_addon.cpp item_attribute.cpp item_manager.cpp item_manager_idrange.cpp locale.cpp\ locale_service.cpp log.cpp login_data.cpp lzo_manager.cpp marriage.cpp matrix_card.cpp\ messenger_manager.cpp mining.cpp mob_manager.cpp monarch.cpp motion.cpp over9refine.cpp p2p.cpp packet_info.cpp\ party.cpp passpod.cpp pcbang.cpp polymorph.cpp priv_manager.cpp pvp.cpp\ questevent.cpp questlua.cpp questlua_affect.cpp questlua_arena.cpp questlua_ba.cpp questlua_building.cpp\ questlua_danceevent.cpp questlua_dungeon.cpp questlua_forked.cpp questlua_game.cpp questlua_global.cpp\ questlua_guild.cpp questlua_horse.cpp questlua_pet.cpp questlua_item.cpp questlua_marriage.cpp questlua_mgmt.cpp\ questlua_monarch.cpp questlua_npc.cpp questlua_oxevent.cpp questlua_party.cpp questlua_pc.cpp\ questlua_quest.cpp questlua_target.cpp questmanager.cpp questnpc.cpp questpc.cpp\ refine.cpp regen.cpp safebox.cpp sectree.cpp sectree_manager.cpp sequence.cpp shop.cpp\ skill.cpp start_position.cpp target.cpp text_file_loader.cpp trigger.cpp utils.cpp vector.cpp war_map.cpp\ wedding.cpp xmas_event.cpp version.cpp panama.cpp threeway_war.cpp map_location.cpp auth_brazil.cpp\ BlueDragon.cpp BlueDragon_Binder.cpp DragonLair.cpp questlua_dragonlair.cpp\ HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp skill_power.cpp affect.cpp\ SpeedServer.cpp questlua_speedserver.cpp XTrapManager.cpp\ auction_manager.cpp FileMonitor_FreeBSD.cpp ClientPackageCryptInfo.cpp cipher.cpp\ buff_on_attributes.cpp dragon_soul_table.cpp DragonSoul.cpp\ group_text_parse_tree.cpp char_dragonsoul.cpp questlua_dragonsoul.cpp\ shop_manager.cpp shopEx.cpp item_manager_read_tables.cpp COBJS = $(CFILE:%.c=$(OBJDIR)/%.o) CPPOBJS = $(CPPFILE:%.cpp=$(OBJDIR)/%.o) MAINOBJ = $(OBJDIR)/main.o MAINCPP = main.cpp TESTOBJ = $(OBJDIR)/test.o TESTCPP = test.cpp TEST_TARGET = $(BINDIR)/test default: $(TARGET) @strip $(TARGET) $(OBJDIR)/minilzo.o: minilzo.c @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@ @echo compile $< $(OBJDIR)/version.o: version.cpp @$(CC) $(CFLAGS) -D__USER__=\"$(USER)\" -D__HOSTNAME__=\"$(HOSTNAME)\" -D__PWD__=\"$(PWD)\" -D__P4_VERSION__=\"$(P4_VERSION)\" -c $< -o $@ @echo compile $< $(OBJDIR)/%.o: %.cpp @echo compile $< @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@ limit_time: @echo update limit time @python update_limit_time.py $(TARGET): $(CPPOBJS) $(COBJS) $(MAINOBJ) @echo linking $(TARGET).... @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(MAINOBJ) $(LIBS) -o $(TARGET) $(TEST_TARGET): $(TESTCPP) $(CPPOBJS) $(COBJS) $(TESTOBJ) @echo linking $(TEST_TARGET) @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(TESTOBJ) $(LIBS) -o ../test clean: @rm -f $(COBJS) $(CPPOBJS) @rm -f $(BINDIR)/game_r* $(BINDIR)/conv tag: ctags *.cpp *.h *.c dep: makedepend -f Depend $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(CPPFILE) $(CFILE) $(MAINCPP) $(TESTCPP) 2> /dev/null > Depend sinclude Depend Edited May 29, 2020 by 3bd0 2 Link to comment Share on other sites More sharing options...
Premium FrenchForeignLegion 245 Posted May 22, 2020 Premium Share Posted May 22, 2020 Can you please go to the path where your compiled game file is and do "ldd game"?. It will tell you what packages are neeeded in order to actually start up the server, it will aswell tell you if you are missing them. 1 Engineer @ CNH Industrial Link to comment Share on other sites More sharing options...
Sherer 481 Posted May 22, 2020 Share Posted May 22, 2020 Actually how did you manage to use gcc48 on FreeBSD 11.3? It's totally outdated. Consider updating it. 1 Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 22, 2020 Author Share Posted May 22, 2020 57 minutes ago, witcher said: Can you please go to the path where your compiled game file is and do "ldd game"?. It will tell you what packages are neeeded in order to actually start up the server, it will aswell tell you if you are missing them. This is the list of the command produced and I checked every single one of them, they all exist. libmd.so.6 => /lib/libmd.so.6 (0x28471000) libIL.so.1 => /usr/local/lib/libIL.so.1 (0x2848c000) libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x285a9000) libtiff.so.5 => /usr/local/lib/libtiff.so.5 (0x285d9000) libmng.so.1 => /usr/local/lib/libmng.so.1 (0x28647000) liblcms.so.1 => /usr/local/lib/liblcms.so.1 (0x286a1000) libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x286d8000) libz.so.6 => /lib/libz.so.6 (0x28761000) libssl.so.8 => /usr/lib/libssl.so.8 (0x28777000) libstdc++.so.6 => /usr/local/lib/gcc48/libstdc++.so.6 (0x287d1000) libm.so.5 => /lib/libm.so.5 (0x288bd000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x288ea000) libthr.so.3 => /lib/libthr.so.3 (0x288fb000) libc.so.7 => /lib/libc.so.7 (0x2891f000) libnvtt.so => /usr/local/lib/libnvtt.so (0x28a7d000) libjasper.so.4 => /usr/local/lib/libjasper.so.4 (0x28a93000) libc++.so.1 => /usr/lib/libc++.so.1 (0x28af0000) libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x28bae000) liblzma.so.5 => /usr/lib/liblzma.so.5 (0x28bc8000) libjbig.so.2 => /usr/local/lib/libjbig.so.2 (0x28bec000) libcrypto.so.8 => /lib/libcrypto.so.8 (0x28bf8000) libnvimage.so => /usr/local/lib/libnvimage.so (0x28d89000) libnvmath.so => /usr/local/lib/libnvmath.so (0x28dab000) libnvcore.so => /usr/local/lib/libnvcore.so (0x28db0000) libImath-2_4.so.24 => /usr/local/lib/libImath-2_4.so.24 (0x28db7000) libIlmImf-2_4.so.24 => /usr/local/lib/libIlmImf-2_4.so.24 (0x28dc8000) libIex-2_4.so.24 => /usr/local/lib/libIex-2_4.so.24 (0x290a5000) libHalf-2_4.so.24 => /usr/local/lib/libHalf-2_4.so.24 (0x290fd000) libIlmThread-2_4.so.24 => /usr/local/lib/libIlmThread-2_4.so.24 (0x29140000) libIexMath-2_4.so.24 => /usr/local/lib/libIexMath-2_4.so.24 (0x29147000) 40 minutes ago, Sherer said: Actually how did you manage to use gcc48 on FreeBSD 11.3? It's totally outdated. Consider updating it. gcc48 is included in the ports. I am planning to update it but sine this is the version I used on 9.2, wanted to make it work with it first then update from there. Link to comment Share on other sites More sharing options...
IceShiva 150 Posted May 22, 2020 Share Posted May 22, 2020 I think you still use code under "tr1" namespace and this causes crash. Additionally do not use old libraries from extern. You dont need anything from extern to do game server working. libstdc++.so.6, libcxxrt.so.1 libc++.so.1 mixing of these libraries is not coool 1 Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 22, 2020 Author Share Posted May 22, 2020 (edited) 1 hour ago, IceShiva said: I think you still use code under "tr1" namespace and this causes crash. Additionally do not use old libraries from extern. You dont need anything from extern to do game server working. libstdc++.so.6, libcxxrt.so.1 libc++.so.1 mixing of these libraries is not coool I did update all packages and deleted everything in Extern except include/boost. The only thing I am not using the latest version for is cryptopp, I am suing cryptopp700 (I built it myself). But still getting a segmentation fault. Output of bt full is the following. Spoiler #0 0x28f20a86 in vtable for __cxxabiv1::__si_class_type_info () from /lib/libcxxrt.so.1 No symbol table info available. #1 0x28a46024 in ?? () from /usr/lib/libstdc++.so.6 No symbol table info available. #2 0x28ae0440 in ?? () from /usr/lib/libstdc++.so.6 No symbol table info available. #3 0x00000000 in ?? () No symbol table info available. I don't know about the tr1 namespace honestly, do you where that was used and how to fix it? Edit: This is the makefile now after edits https://pastebin.com/EpeHUijk Edited May 22, 2020 by 3bd0 2 Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 23, 2020 Author Share Posted May 23, 2020 I removed all optimisation flags & removed the hackshield stuff as I don't have the source code for that to rebuild the lib. I updated gdb version to 9.1 as well. Now the game error out with a bus error. This is the output of bt full. #0 0x29073a85 in vtable for __cxxabiv1::__si_class_type_info () from /lib/libcxxrt.so.1 No symbol table info available. #1 0x28c33440 in ?? () from /usr/lib/libstdc++.so.6 No symbol table info available. Backtrace stopped: previous frame inner to this frame (corrupt stack?) Does anyone have any idea what is going on? Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 24, 2020 Author Share Posted May 24, 2020 Willing to pay to fix this Link to comment Share on other sites More sharing options...
Developer Ikarus_ 2425 Posted May 25, 2020 Developer Share Posted May 25, 2020 try by adding -static here like this: CFLAGS = -w -g -Wall -O2 -m32 -std=c++11 -static -pipe -fexceptions -D_THREAD_SAFE -DNDEBUG -D__SVN_VERSION__=\"$(SVN_VERSION)\" i hope you are not running the game binary on a older version of freebsd (eg. compiling on 11.3 and running on 10.3) compiler OS version must be <= live-server OS version 1 My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 25, 2020 Author Share Posted May 25, 2020 1 hour ago, Ikarus_ said: try by adding -static here like this: CFLAGS = -w -g -Wall -O2 -m32 -std=c++11 -static -pipe -fexceptions -D_THREAD_SAFE -DNDEBUG -D__SVN_VERSION__=\"$(SVN_VERSION)\" CFLAGS = -w -g -Wall -O2 -m32 -std=c++11 -static -pipe -fexceptions -D_THREAD_SAFE -DNDEBUG -D__SVN_VERSION__=\"$(SVN_VERSION)\" i hope you are not running the game binary on a older version of freebsd (eg. compiling on 11.3 and running on 10.3) compiler OS version must be <= live-server OS version I running and compiling it on the same machine. I tried adding the static flag, but the build failed as it couldn't find gtest library. I checked and I do have the shared lib (.so) but not the static one (.a). Tried googlin on how to build it, but couldn't find anything helpful. Link to comment Share on other sites More sharing options...
Developer Ikarus_ 2425 Posted May 25, 2020 Developer Share Posted May 25, 2020 you can disable google test... into main.cpp, and remove the -lgtest 1 My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 25, 2020 Author Share Posted May 25, 2020 Getting tons of errors now in linking process https://pastebin.com/ewuR7Scg Link to comment Share on other sites More sharing options...
Developer Solution Ikarus_ 2425 Posted May 25, 2020 Developer Solution Share Posted May 25, 2020 (edited) i guess you don't have these libs in your makefile Edited August 25, 2022 by Metin2 Dev Core X - External 2 Internal 1 My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 26, 2020 Author Share Posted May 26, 2020 This worked! I copied all the devil libs from the 9.2 machine and compiled it and its working now perfectly! Will try to upgrade it later. I am guessing the static flag makes the linker pack every library needed into the binary, which makes it work on every machine even if that library is not installed, am I right? Is there any disadvantages to using the static flag vs dynamic linking? Link to comment Share on other sites More sharing options...
Developer Ikarus_ 2425 Posted May 26, 2020 Developer Share Posted May 26, 2020 (edited) 3 hours ago, 3bd0 said: This worked! I copied all the devil libs from the 9.2 machine and compiled it and its working now perfectly! Will try to upgrade it later. I am guessing the static flag makes the linker pack every library needed into the binary, which makes it work on every machine even if that library is not installed, am I right? Is there any disadvantages to using the static flag vs dynamic linking? Yes, the static linking links the whole code. Sometimes static linking could conflict when the machines are not using the same OS but very rarely. Why did moderator removed my message with the libs list? lol btw good luck with ur work bye bye Edited May 26, 2020 by Ikarus_ My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
3bd0 181 Posted May 26, 2020 Author Share Posted May 26, 2020 28 minutes ago, Ikarus_ said: Yes, the static linking links the whole code. Sometimes static linking could conflict when the machines are not using the same OS but very rarely. Why did moderator removed my message with the libs list? lol btw good luck with ur work bye bye It wasn't removed. It moved to the top of the thread because I marked it as best answer. Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now