EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Linux Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=588)
-   -   Trying to run server on different architecture. (https://www.eqemulator.org/forums/showthread.php?t=35391)

Optimus 06-07-2012 09:56 PM

Trying to run server on different architecture.
 
I have compiled the server under for linux on a non-x86 architecture, and am in the process of getting it all running. Both world and zone programs crash with a Segmentation fault at "Loading variables"

I have the database setup properly with permissions (database runs on a different device), I have successfully connected to the database from another EQemu install on windows.

Does anyone know where I should be looking for the problem? I have a bit of C programming experience so I will monkey around with it. The problem seems to be from somewhere in the \common directory somewhere in the database progs but I haven't narrowed it down to exactly where.

For those interested, I am trying to compile this on a kirkwood armel architecture device running Debian linux 3.3.2. I am pretty new to linux and have just started monkeying around with these but they are running linux well now and want to toy with seeing if I can get EQEmu running on them.

Thanks for any suggestions.

lerxst2112 06-07-2012 10:40 PM

Is it a big endian machine? I would expect you to have many issues on one of those.

Optimus 06-07-2012 10:53 PM

I wasn't sure, but found this:

Most ARM CPUs may be run in either endian mode (big or little). However, the majority of current system implementation uses little-endian mode. Debian currently only supports little-endian ARM systems.

So this must be little endian.

Vexyl 06-07-2012 10:57 PM

Run it under a debugger and report back the results.
You probably already have gdb since you're running Debian.

Optimus 06-07-2012 11:12 PM

Code:

(gdb) run
Starting program: /home/eqserver/server/world
[Thread debugging using libthread_db enabled]
[New Thread 0xb6945460 (LWP 579)]
[New Thread 0xb6145460 (LWP 580)]
[Debug] Starting Log: logs/eqemu_debug_world.log
[Debug] [COMMON__THREADS] Starting TCPServerLoop with thread ID -1240181664
[Debug] [WORLD__INIT] Loading server configuration..
[Debug] [WORLD__INIT] Log settings loaded from log.ini
[Debug] [WORLD__INIT] CURRENT_WORLD_VERSION:EQEmulator 0.8.0
[Debug] [WORLD__INIT] Added loginserver eqemulator.net:5998
[Debug] [WORLD__INIT] Connecting to MySQL...
[Status] Starting Log: logs/eqemu_world.log
[Status] Using database 'peq' at 192.168.1.215:3306
[New Thread 0xb5930460 (LWP 581)]
[Debug] [WORLD__INIT] HTTP world service disabled.
[Debug] [WORLD__INIT] Loading variables..

Program received signal SIGSEGV, Segmentation fault.
0xb6a254a0 in memcpy () from /lib/libc.so.6


Optimus 06-08-2012 10:13 PM

I see #if DEBUG_MYSQL_QUERIES >= 1 and #ifdef _EQDEBUG a lot around the code that is causing me problems. Are there other defines I should look to activate? Also, where will I see the output from these?

FYI I have traced these into Database::LoadVariables(from database.cpp) and DBcore::RunQuery(from DBcore.cpp) functions, so I am going to see from there where this leads me.

I am not good with gdb I need to find out how to see some of the variables that are getting passed.

lerxst2112 06-09-2012 12:13 AM

When it crashes, type 'bt' to see a stack trace with the variables that were passed to the function. 'info locals' will show you the local variables for a particular stack frame, and 'print x' will show you the contents of other variables, where 'x' is their name. 'up' moves up a frame, and 'down' moves down a frame.


All times are GMT -4. The time now is 07:49 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.