Total servers: 1
M0rtsHeaven
Modern Warfare1.0 – 20lt
IP: 84.251.82.165
Game Mode: Death Match
Lives: 0
Max Kills: 12
Version: OpenLieroX 0.58 rc5
Players:
Pages: [1] 2 3  All   Go Down

Author Topic: OLX build for Nokia N800/N810  (Read 13952 times)

pelya

OLX build for Nokia N800/N810
« on: August 01, 2008, 03:24:03 pm »
I was recently asked by friend to build OLX for his Nokia N800 internet tablet. Then he asked to make another build, smaller in size, so I've stripped most of levels and mods from it. But he hasn't installed it on the device yet, so I don't even know if it will work at all.
Theoretically it's possible to play OLX with N800 using it's joystick and 4 keys, though they have very game-unfriendly layout.
OLX for Nokia - 48 Mb
Stripped OLX for Nokia - 11 Mb
It's called Beta5 but it actually SVN version, and identifies itself as Beta6.
« Last Edit: August 01, 2008, 03:30:02 pm by pelya »

Shade

Re: OLX build for Nokia N800/N810
« Reply #1 on: August 01, 2008, 05:33:04 pm »
This will be great, if it works..
One day you'll just be a memory for some people, do your best to be a good one.

mikkov

Re: OLX build for Nokia N800/N810
« Reply #2 on: August 03, 2008, 05:07:00 pm »
Hi

OpenLieroX beta5 and beta4 are not working on N8x0 due to segmentation fault in libstdc++ (at least with latest os version). I have however earlier this week packaged beta3 which is available from official maemo extras repository.

There is back trace below if anyone is interested (no debugging symbols for linstdc++). I have tried to convert RegisterCInput() fuction to use other STL containers but they all cause segmentation fault.

Program received signal SIGSEGV, Segmentation fault.
0x403c288c in std::_Rb_tree_decrement () from /usr/lib/libstdc++.so.6
(gdb) bt
#0  0x403c288c in std::_Rb_tree_decrement () from /usr/lib/libstdc++.so.6
#1  0x000a128c in std::_Rb_tree_iterator<CInput*>::operator-- (this=0xbee1e438)
    at /scratchbox/compilers/cs2005q3.2-glibc2.5-arm/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.4/../../../../include/c++/3.4.4/bits/stl_tree.h:196
#2  0x000a0784 in std::_Rb_tree<CInput*, CInput*, std::_Identity<CInput*>, std::less<CInput*>, std::allocator<CInput*> >::insert_unique (this=0x202e44, __v=@0xbee1e4a4)
    at /scratchbox/compilers/cs2005q3.2-glibc2.5-arm/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.4/../../../../include/c++/3.4.4/bits/stl_tree.h:879
#3  0x000a0250 in std::set<CInput*, std::less<CInput*>, std::allocator<CInput*> >::insert (this=0x202e44, __x=@0xbee1e4a4)
    at /scratchbox/compilers/cs2005q3.2-glibc2.5-arm/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.4/../../../../include/c++/3.4.4/bits/stl_set.h:314
#4  0x0009efd0 in RegisterCInput (input=0x201620) at src/client/InputEvents.cpp:78
#5  0x0006f358 in CInput (this=0x201620) at src/client/CInput.cpp:273
#6  0x00013e98 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at src/main.cpp:54
#7  0x00014024 in global constructors keyed to tLX () at src/main.cpp:270
#8  0x001ad7d4 in __libc_csu_init ()
#9  0x404e00a0 in __libc_start_main () from /lib/libc.so.6
#10 0x0000f7a8 in _start ()

albert

Re: OLX build for Nokia N800/N810
« Reply #3 on: August 04, 2008, 02:23:02 am »
Global CInput's (see main.cpp, ~ lines 54 ff).

As I said often enough, global class instances are evil and should not be used!

(The problem is, that for example cTakeScreenshot (main.cpp) is initialized *before* cInputs (InputEvents.cpp), therefore RegisterCInput() cannot work correctly.)

mikkov

Re: OLX build for Nokia N800/N810
« Reply #4 on: August 04, 2008, 02:52:39 am »
Now I got beta5 also almost working by changing std::set to std::vector. I didn't implement UnregisterCInput(), but hope that it isn't used until exiting the game or changing theme.

Basically everything else seems to work but bots are causing segmentation fault when loading level (theme changing isn't working due to non working UnregisterCInput). gdb couldn't give usable back trace but I stepped though from CClient::ParsePrepareGame where last debug print is printed.


edit:  crap removed, because seg fault is happening in another thread

« Last Edit: August 04, 2008, 03:58:02 am by mikkov »

albert

Re: OLX build for Nokia N800/N810
« Reply #5 on: August 04, 2008, 12:45:58 pm »
Thanks for the tries mikkov. I think Karel fixed the global CInput problems now in last revision, so anything CInput related should not be a problem anymore.

Sad that you can not get a meaningful backtrace at level loading. Perhaps try to compile with different compiler flags.

mikkov

Re: OLX build for Nokia N800/N810
« Reply #6 on: August 04, 2008, 08:16:27 pm »
I have now svn version  r2265 +  CInput fix from today  and level loading is still seg faulting if computer players are used. Later svn versions are not compiling due to changes in  GfxPrimitives, most likely maemo's SDL version is too old.

Below is best what I could get with gdb. Other things which are causing segmentation fault is exiting the program and changing theme from the main menu (well they use exactly same the code;))

#0  CWorm::AI_Initialize (this=0x798938) at src/common/CWorm_AI.cpp:869
#1  0x0014c210 in CWorm::Prepare (this=0x798938, pcMap=0x7bf218) at src/common/CWorm.cpp:202
#2  0x000529c0 in CClient::ParsePrepareGame (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:758
#3  0x000511bc in CClient::ParsePacket (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:319
#4  0x0012f0fc in CClient::ReadPackets (this=0x41176008) at src/common/CClient.cpp:866
#5  0x0012eecc in CClient::Frame (this=0x41176008) at src/common/CClient.cpp:815
#6  0x00012a78 in GameLoopFrame () at src/main.cpp:706
#7  0x00010a94 in main (argc=2, argv=0xbec15664) at src/main.cpp:354
(gdb) step
CWorm::AI_Shutdown (this=0x798938) at src/common/CWorm_AI.cpp:921
921      if(pathSearcher) {
(gdb)
922         delete ((searchpath_base*)pathSearcher);
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:494
494         breakThreadSignal();
(gdb)
searchpath_base::breakThreadSignal (this=0x825c90) at src/common/CWorm_AI.cpp:760
760         break_thread_signal = 1;
(gdb)
761      }
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:495
495         SDL_WaitThread(thread, NULL);
(gdb)
[New LWP 4411]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4411]
0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
(gdb) bt
#0  0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
#1  0x404bf44c in ?? () from /lib/libgcc_s.so.1
Cannot access memory at address 0x0

DarkCharlie

Re: OLX build for Nokia N800/N810
« Reply #7 on: August 04, 2008, 08:45:00 pm »
I have now svn version  r2265 +  CInput fix from today  and level loading is still seg faulting if computer players are used. Later svn versions are not compiling due to changes in  GfxPrimitives, most likely maemo's SDL version is too old.

Below is best what I could get with gdb. Other things which are causing segmentation fault is exiting the program and changing theme from the main menu (well they use exactly same the code;))

#0  CWorm::AI_Initialize (this=0x798938) at src/common/CWorm_AI.cpp:869
#1  0x0014c210 in CWorm::Prepare (this=0x798938, pcMap=0x7bf218) at src/common/CWorm.cpp:202
#2  0x000529c0 in CClient::ParsePrepareGame (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:758
#3  0x000511bc in CClient::ParsePacket (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:319
#4  0x0012f0fc in CClient::ReadPackets (this=0x41176008) at src/common/CClient.cpp:866
#5  0x0012eecc in CClient::Frame (this=0x41176008) at src/common/CClient.cpp:815
#6  0x00012a78 in GameLoopFrame () at src/main.cpp:706
#7  0x00010a94 in main (argc=2, argv=0xbec15664) at src/main.cpp:354
(gdb) step
CWorm::AI_Shutdown (this=0x798938) at src/common/CWorm_AI.cpp:921
921      if(pathSearcher) {
(gdb)
922         delete ((searchpath_base*)pathSearcher);
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:494
494         breakThreadSignal();
(gdb)
searchpath_base::breakThreadSignal (this=0x825c90) at src/common/CWorm_AI.cpp:760
760         break_thread_signal = 1;
(gdb)
761      }
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:495
495         SDL_WaitThread(thread, NULL);
(gdb)
[New LWP 4411]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4411]
0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
(gdb) bt
#0  0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
#1  0x404bf44c in ?? () from /lib/libgcc_s.so.1
Cannot access memory at address 0x0


Could you tell me what compiler errors you get? The fix for the AI will be in SVN within an hour.

mikkov

Re: OLX build for Nokia N800/N810
« Reply #8 on: August 04, 2008, 09:30:36 pm »

Here's whole build log. SDL_putenv error is present in r2265 but I just replaced it with putenv. I don't know why it doesn't work because SDL_putenv is defined in includes .

--- OpenLieroX compile.sh ---
* version 0.57_beta6_r2272
* the global search-path of the game will be /usr/share/OpenLieroX
* debug-thingies in the game will be activated
* g++ will be used for compilation
* debugging-data will be included in the bin
* none additional compiler-flags will be used
* X11 clipboard support is activated
* HawkNL support will be built into the binary
>>> compiling now, this could take some time ...
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignX2':
include/GfxPrimitives.h:179:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = RefRectBasic<Sint16, Uint16>]'
include/GfxPrimitives.h:201:   instantiated from `bool ClipRefRectWith(_Type&, _Type&, _TypeS&, _TypeS&, const _ClipRect&) [with _Type = Sint16, _TypeS = Uint16, _ClipRect = Rect<SDLRectBasic>]'
src/client/CFont.cpp:252:   instantiated from here
include/GfxPrimitives.h:153: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignY2':
include/GfxPrimitives.h:187:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = RefRectBasic<Sint16, Uint16>]'
include/GfxPrimitives.h:201:   instantiated from `bool ClipRefRectWith(_Type&, _Type&, _TypeS&, _TypeS&, const _ClipRect&) [with _Type = Sint16, _TypeS = Uint16, _ClipRect = Rect<SDLRectBasic>]'
src/client/CFont.cpp:252:   instantiated from here
include/GfxPrimitives.h:163: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignX2':
include/GfxPrimitives.h:177:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = SDLRectBasic]'
include/GfxPrimitives.h:206:   instantiated from `bool ClipRefRectWith(SDL_Rect&, const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>]'
src/client/GfxPrimitives.cpp:518:   instantiated from here
include/GfxPrimitives.h:153: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignY2':
include/GfxPrimitives.h:185:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = SDLRectBasic]'
include/GfxPrimitives.h:206:   instantiated from `bool ClipRefRectWith(SDL_Rect&, const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>]'
src/client/GfxPrimitives.cpp:518:   instantiated from here
include/GfxPrimitives.h:163: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignX2':
include/GfxPrimitives.h:179:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = RefRectBasic<int, int>]'
include/GfxPrimitives.h:201:   instantiated from `bool ClipRefRectWith(_Type&, _Type&, _TypeS&, _TypeS&, const _ClipRect&) [with _Type = int, _TypeS = int, _ClipRect = Rect<SDLRectBasic>]'
src/common/CMap.cpp:591:   instantiated from here
include/GfxPrimitives.h:153: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
include/GfxPrimitives.h: In instantiation of `Rect<SDLRectBasic>::AssignY2':
include/GfxPrimitives.h:187:   instantiated from `bool Rect<_RectBasic>::clipWith(const _ClipRect&) [with _ClipRect = Rect<SDLRectBasic>, _RectBasic = RefRectBasic<int, int>]'
include/GfxPrimitives.h:201:   instantiated from `bool ClipRefRectWith(_Type&, _Type&, _TypeS&, _TypeS&, const _ClipRect&) [with _Type = int, _TypeS = int, _ClipRect = Rect<SDLRectBasic>]'
src/common/CMap.cpp:591:   instantiated from here
include/GfxPrimitives.h:163: error: base `SDLRectBasic' with only non-default constructor in class without a constructor
src/mods/openliero/OpenLiero_main.cpp: In function `int gameEntry(int, char**)':
src/mods/openliero/OpenLiero_main.cpp:45: error: `SDL_putenv' undeclared (first use this function)
src/mods/openliero/OpenLiero_main.cpp:45: error: (Each undeclared identifier is reported only once for each function it appears in.)
libs/hawknl/src/loopback.c: In function `NLushort loopback_getNextPort()':
libs/hawknl/src/loopback.c:60: warning: comparison is always false due to limited range of data type
>>> error(s) reported, check the output above

albert

Re: OLX build for Nokia N800/N810
« Reply #9 on: August 04, 2008, 11:31:12 pm »
Hopefully fixed both compiler errors (putenv + SDLRectBasic problem) in r2273, please try again.

albert

Re: OLX build for Nokia N800/N810
« Reply #10 on: August 04, 2008, 11:33:06 pm »
Other things which are causing segmentation fault is exiting the program and changing theme from the main menu (well they use exactly same the code;))

Can you produce a backtrace of that?

albert

Re: OLX build for Nokia N800/N810
« Reply #11 on: August 04, 2008, 11:53:57 pm »
#0  CWorm::AI_Initialize (this=0x798938) at src/common/CWorm_AI.cpp:869
#1  0x0014c210 in CWorm::Prepare (this=0x798938, pcMap=0x7bf218) at src/common/CWorm.cpp:202
#2  0x000529c0 in CClient::ParsePrepareGame (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:758
#3  0x000511bc in CClient::ParsePacket (this=0x41176008, bs=0xbec15440) at src/client/CClient_Parse.cpp:319
#4  0x0012f0fc in CClient::ReadPackets (this=0x41176008) at src/common/CClient.cpp:866
#5  0x0012eecc in CClient::Frame (this=0x41176008) at src/common/CClient.cpp:815
#6  0x00012a78 in GameLoopFrame () at src/main.cpp:706
#7  0x00010a94 in main (argc=2, argv=0xbec15664) at src/main.cpp:354
(gdb) step
CWorm::AI_Shutdown (this=0x798938) at src/common/CWorm_AI.cpp:921
921      if(pathSearcher) {
(gdb)
922         delete ((searchpath_base*)pathSearcher);
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:494
494         breakThreadSignal();
(gdb)
searchpath_base::breakThreadSignal (this=0x825c90) at src/common/CWorm_AI.cpp:760
760         break_thread_signal = 1;
(gdb)
761      }
(gdb)
~searchpath_base (this=0x825c90) at src/common/CWorm_AI.cpp:495
495         SDL_WaitThread(thread, NULL);
(gdb)
[New LWP 4411]

You can see there, that it reaches "delete ((searchpath_base*)pathSearcher);". It only reaches that if pathSearcher!=NULL. But that should not be the case when the CWorm was not initialised yet. Probably it points to a bad CWorm. That would mean that CClient::cRemoteWorms are not correct somehow. I am note sure yet what exactly is wrong there. Can you perhaps make a breakpoint at the delete and check if the values of the CWorm and of the (searchpath_base*)pathSearcher are making sense?

Can you give the output of OLX before it crashed?

mikkov

Re: OLX build for Nokia N800/N810
« Reply #12 on: August 05, 2008, 12:55:42 am »
[

You can see there, that it reaches "delete ((searchpath_base*)pathSearcher);". It only reaches that if pathSearcher!=NULL. But that should not be the case when the CWorm was not initialised yet. Probably it points to a bad CWorm. That would mean that CClient::cRemoteWorms are not correct somehow. I am note sure yet what exactly is wrong there. Can you perhaps make a breakpoint at the delete and check if the values of the CWorm and of the (searchpath_base*)pathSearcher are making sense?

Can you give the output of OLX before it crashed?


It is compiling now without errors. Segementation faults are still there.
There are at least 3 ways to crash it:
1. start local game with AI player
2. start local game without AI player, quit it, and start a new game without AI player
3. exit program or change theme

Here's breakpoint from case 1.:

Breakpoint 1, CWorm::AI_Shutdown (this=0x799678) at src/common/CWorm_AI.cpp:916
warning: Source file is more recent than executable.
916         delete ((searchpath_base*)pathSearcher);
(gdb) print (searchpath_base*)pathSearcher
$2 = (searchpath_base *) 0x82db38
(gdb) print this
$3 = (CWorm * const) 0x799678

Here's output:
DONE loading options
Loading network texts... DONE
Hello there, I am initializing me now...
setting video mode
ColorDepth: 16
VideoPostProcessor initialisation ... none used, drawing directly on screen
PixelFormat:
  BitsPerPixel: 16,  BytesPerPixel: 2
  R/G/B/A mask: f800/7e0/1f/0
  R/G/B/A loss: 3/2/3/8
  Colorkey: 0,  Alpha: 255
using software surfaces
video mode was set successfully
SDL_AUDIODRIVER=esd
SoundSystem initialised, 1000 channels allocated
Initializing ready
PhysicsEngine LX56 physics loaded
Current cache size: 8 MB
Current cache size: 8 MB
HINT: server started on 127.0.0.1:23400
HINT: sending challenge request to 127.0.0.1:23400
MaxFPS is 95
GameLoopStart
Server is using OpenLieroX/0.57_beta6_r2273
CClient: connected to OpenLieroX/0.57_beta6_r2273 server
GameServer: our local client has connected
CClient(local) with no worms is using OpenLieroX/0.57_beta6_r2273
GameServer::StartGame() mod Liero v1.0
Loading game mod file Classic/script.lgs
Mod loadtime: 1.105999 seconds
Got ParsePrepareGame
Loading game mod file Classic/script.lgs
CrashHandler trigger MyPid=4702


In case 3 crash happens somewhere in QuitNetworkSystem();
Here's some kind of trace though I am not sure if it's very helpful

PhysicsEngine LX56 physics loaded
Current cache size: 8 MB
unloading PhysicsEngine LX56 physics ..
Shutting me down...

Breakpoint 6, SdlNetEvent_UnInit () at src/common/Networking.cpp:214
214      if( ! SdlNetEvent_Inited )
(gdb) bt
#0  SdlNetEvent_UnInit () at src/common/Networking.cpp:214
#1  0x001912b4 in QuitNetworkSystem () at src/common/Networking.cpp:328
#2  0x00014550 in ShutdownLieroX () at src/main.cpp:945
#3  0x00010af4 in main (argc=2, argv=0xbef3a664) at src/main.cpp:373
(gdb) step
217      SdlNetEventThreadExit = true;
(gdb)
218      int status = 0;
(gdb)
219      SDL_WaitThread( SdlNetEventThreads[0], &status );
(gdb)
[New LWP 4687]
[New LWP 4688]
[New LWP 4685]
[Switching to LWP 4687]
0x4008e258 in pthread_exit () from /lib/libpthread.so.0
(gdb) info threads
  3 LWP 4685  0x4008e450 in pthread_join () from /lib/libpthread.so.0
  2 LWP 4688  0x4008e258 in pthread_exit () from /lib/libpthread.so.0
* 1 LWP 4687  0x4008e258 in pthread_exit () from /lib/libpthread.so.0
(gdb) step
Single stepping until exit from function pthread_exit,
which has no line number information.
Cannot access memory at address 0x0
0x40098620 in ?? () from /lib/libpthread.so.0
(gdb)
Cannot find bounds of current function
(gdb) thread 2
[Switching to thread 2 (LWP 4688)]#0  0x4008e25c in pthread_exit () from /lib/libpthread.so.0
(gdb) step
Single stepping until exit from function pthread_exit,
which has no line number information.
Cannot access memory at address 0x0
0x40098624 in ?? () from /lib/libpthread.so.0
(gdb)
Cannot find bounds of current function
(gdb) thread 3
[Switching to thread 3 (LWP 4685)]#0  0x4008e450 in pthread_join () from /lib/libpthread.so.0
(gdb) step
Single stepping until exit from function pthread_join,
which has no line number information.
Cannot access memory at address 0x0
0x40098624 in ?? () from /lib/libpthread.so.0

(gdb) step
Cannot find bounds of current function
(gdb) continue
Continuing.
[New LWP 4686]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4688]
0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1

Edit:

Here's sample of "print *this" in case 1. There's more if you need it :) Note that this is from different session than above and  that's why pathSearcher address isn't same as above.
  cPosTarget = {x = 0, y = 0}, nPathStart = {0, 0}, nPathEnd = {0, 0}, fLastCarve = -999, cStuckPos = {x = -999, y = -999}, fStuckTime = -9999, bStuck = false, fStuckPause = 0,
  fLastThink = -9999, cNinjaShotPos = {x = 0, y = 0}, fLastFace = -9999, fSpawnTime = 0, fBadAimTime = 0, iAiGameType = 1, iAiGame = 0, iAiTeams = 0, iAiTag = 0, iAiVIP = 0, iAiCTF = 0,
  iAiTeamCTF = 0, iAiDiffLevel = 0, iRandomSpread = 0, vLastShootTargetPos = {x = 0, y = 0}, fLastShoot = -9999, fLastJump = -9999, fLastWeaponChange = 0, fLastCreated = -9999,
  fLastCompleting = -9999, fLastRandomChange = 0, fLastGoBack = -9999, fCanShootTime = 0, fRopeAttachedTime = 0, fRopeHookFallingTime = 0, nGridCols = 34, nGridRows = 24,
  fLastPathUpdate = -9999, bPathFinished = true, fSearchStartTime = 0, pathSearcher = 0x814568, NEW_psPath = 0x0, NEW_psCurrentNode = 0x0, NEW_psLastNode = 0x0, fLastSimulationTime = 67.9350052}
« Last Edit: August 05, 2008, 01:07:53 am by mikkov »

albert

Re: OLX build for Nokia N800/N810
« Reply #13 on: August 05, 2008, 02:21:03 am »
Can you also give a "print *((searchpath_base*)pathSearcher)" ?

And do you get a backtrace of case 2? This seems also strange to me.

albert

Re: OLX build for Nokia N800/N810
« Reply #14 on: August 05, 2008, 02:39:00 am »
I added some more debug output for the AI thread for some special cases and some security checks in recent revision 2274, though I don't really think that this changes anything for you.

mikkov

Re: OLX build for Nokia N800/N810
« Reply #15 on: August 05, 2008, 12:57:22 pm »
Can you also give a "print *((searchpath_base*)pathSearcher)" ?

I don't know if I missed this before, but now program can pass src/common/CWorm_AI.cpp:919 many times. First time pathSearcher is NULL and the last time pathSearcher is not NULL. In trace below it passes 2 times, but once it passed 3 or 4 times before crash.

Breakpoint 1, CWorm::AI_Shutdown (this=0x7a95b0) at src/common/CWorm_AI.cpp:919
warning: Source file is more recent than executable.
919      if(pathSearcher) {
(gdb) print pathSearcher
$1 = (void *) 0x0
(gdb) print this
$2 = (CWorm * const) 0x7a95b0
(gdb) print *this
$3 = {bUsed = true, iID = 0, iType = 1, bLocal = true, iTeam = 0, sName = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7e9d4c "[CPU] Kamikazee!"}},
  iRanking = 0, iKillsInRow = 0, iDeathsInRow = 0, bAlreadyKilled = false, bSpectating = false, iClientID = 0, iClientWormID = 0, cUp = {Type = 0, Data = 273,
    Extra = 0, m_EventName = {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302d6c "up"}},
    resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cDown = {Type = 0, Data = 274, Extra = 0, m_EventName = {
      static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x3033c4 "down"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cLeft = {Type = 0, Data = 276, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302bbc "left"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cRight = {Type = 0, Data = 275, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d0c "right"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cShoot = {Type = 0, Data = 13, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d54 "enter"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cJump = {Type = 1, Data = 1, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302cdc "ms1"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cSelWeapon = {Type = 0, Data = 289, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d24 "F8"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cInpRope = {Type = 0, Data = 287, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302cf4 "F6"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cStrafe = {Type = 0, Data = 288, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d3c "F7"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cWeapons = {{Type = 0, Data = 49, Extra = 0,
      m_EventName = {static npos = 4294967295,
---Type <return> to continue, or q <return> to quit---q
_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},Quit
(gdb) continue
Continuing.

Breakpoint 1, CWorm::AI_Shutdown (this=0x7a95b0) at src/common/CWorm_AI.cpp:919
919      if(pathSearcher) {
(gdb) print pathSearcher
$4 = (void *) 0x8315d8
(gdb) print *((searchpath_base*)pathSearcher)
$5 = {pcMap = 0x7d0148, areas = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<searchpath_base::area_item*> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<searchpath_base::area_item*> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x8315e0,
          _M_right = 0x8315e0}, _M_node_count = 0}}}, nodes = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<NEW_ai_node_t*> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<NEW_ai_node_t*> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<NEW_ai_node_t*,NEW_ai_node_t*,bool>> = {<No data fields>}, <No data fields>}, _M_header = {
          _M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x8315f8, _M_right = 0x8315f8}, _M_node_count = 0}}}, start = {x = 0, y = 0}, target = {x = 0,
    y = 0}, areas_stack = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<searchpath_base::area_item*> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<searchpath_base::area_item*> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x831620,
          _M_right = 0x831620}, _M_node_count = 0}}}, resulted_path = 0x0, thread = 0x831a40, thread_mut = 0x7ba3b0, thread_is_ready = true,
  break_thread_signal = 0, restart_thread_searching_signal = 0, restart_thread_searching_newdata = {start = {x = 0, y = 0}, target = {x = 0, y = 0}}}
(gdb) bt
#0  CWorm::AI_Shutdown (this=0x7a95b0) at src/common/CWorm_AI.cpp:919
#1  0x001525e0 in CWorm::AI_Initialize (this=0x7a95b0) at src/common/CWorm_AI.cpp:873
#2  0x0014cd40 in CWorm::Prepare (this=0x7a95b0, pcMap=0x7d0148) at src/common/CWorm.cpp:200
#3  0x000528ec in CClient::ParsePrepareGame (this=0x41176008, bs=0xbe8fc460) at src/client/CClient_Parse.cpp:758
#4  0x000510e8 in CClient::ParsePacket (this=0x41176008, bs=0xbe8fc460) at src/client/CClient_Parse.cpp:319
#5  0x0012fc30 in CClient::ReadPackets (this=0x41176008) at src/common/CClient.cpp:866
#6  0x0012fa00 in CClient::Frame (this=0x41176008) at src/common/CClient.cpp:815
#7  0x00012a78 in GameLoopFrame () at src/main.cpp:706
#8  0x00010a94 in main (argc=2, argv=0xbe8fc684) at src/main.cpp:354
(gdb) print *this
$6 = {bUsed = true, iID = 0, iType = 1, bLocal = true, iTeam = 0, sName = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7e9d4c "[CPU] Kamikazee!"}},
  iRanking = 0, iKillsInRow = 0, iDeathsInRow = 0, bAlreadyKilled = false, bSpectating = false, iClientID = 0, iClientWormID = 0, cUp = {Type = 0, Data = 273,
    Extra = 0, m_EventName = {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302d6c "up"}},
    resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cDown = {Type = 0, Data = 274, Extra = 0, m_EventName = {
      static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x3033c4 "down"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cLeft = {Type = 0, Data = 276, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302bbc "left"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cRight = {Type = 0, Data = 275, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d0c "right"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cShoot = {Type = 0, Data = 13, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d54 "enter"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cJump = {Type = 1, Data = 1, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302cdc "ms1"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cSelWeapon = {Type = 0, Data = 289, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d24 "F8"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cInpRope = {Type = 0, Data = 287, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302cf4 "F6"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cStrafe = {Type = 0, Data = 288, Extra = 0,
    m_EventName = {static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
        _M_p = 0x302d3c "F7"}}, resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, cWeapons = {{Type = 0, Data = 49, Extra = 0,
      m_EventName = {static npos = 4294967295,
---Type <return> to continue, or q <return> to quit---
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302d9c "1"}},
      resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, {Type = 0, Data = 50, Extra = 0, m_EventName = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302db4 "2"}},
      resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, {Type = 0, Data = 51, Extra = 0, m_EventName = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302dcc "3"}},
      resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, {Type = 0, Data = 52, Extra = 0, m_EventName = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x302de4 "4"}},
      resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}, {Type = 0, Data = 53, Extra = 0, m_EventName = {static npos = 4294967295,
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3033dc "5"}},
      resetEachFrame = true, nDown = 0, nDownOnce = 0, nUp = 0, bDown = false}}, bUsesMouse = true, lastMoveTime = 0, tState = {iFlags = 0, iX = 0, iY = 0,
    iAngle = 0, iHookType = 0, iHookX = 0, iHookY = 0, bShoot = false, bCarve = false, iDirection = 0, bMove = false, bJump = false, iWeapon = 0}, vPos = {
    x = 0, y = 0}, vVelocity = {x = 0, y = 0}, vLastPos = {x = 0, y = 0}, vDrawPos = {x = 0, y = 0}, bOnGround = false, fLastInputTime = 38.5940018,
  vFollowPos = {x = 0, y = 0}, bFollowOverride = false, iKills = 0, iDeaths = 0, iSuicides = 0, iTotalWins = 0, iTotalLosses = 0, iTotalKills = 0,
  iTotalDeaths = 0, sAddressList = {static npos = 4294967295,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x40439ed0 ""}}, sAliasList = {
    static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x40439ed0 ""}}, fLoadingTime = 1, bDrawMuzzle = false, iHealth = 100, iLives = 10, bAlive = false, fTimeofDeath = 0, iDirection = 1,
  iMoveDirection = 0, bGotTarget = false, fAngle = 0, fAngleSpeed = 0, fMoveSpeedX = 0, fFrame = 0, cNinjaRope = {Released = false, HookShooting = false,
    HookAttached = false, PlayerAttached = false, Worm = 0x0, RopeLength = 300, RestLength = 27, Strength = 4.5, HookVelocity = {x = 0, y = 0}, HookPos = {
      x = 0, y = 0}, HookDir = {x = 0, y = 0}, OldHookPos = {x = 0, y = 0}, LastReleased = false, LastHookShooting = false, LastHookAttached = false,
    LastPlayerAttached = false, LastWorm = 0x0, LastWrite = -9999, LastPosUpdate = -9999}, tProfile = 0x36c230, fRopeTime = -9999, bHooked = false,
  pcHookWorm = 0x0, bRopeDown = false, bRopeDownOnce = false, bTagIT = false, fTagTime = 0, fLastSparkle = -99999, iDirtCount = 0, fLastBlood = -9999,
  pcMap = 0x7d0148, cOwner = 0x41176008, fFrameTimes = {-99999 <repeats 16 times>}, tLobbyState = {iType = 0, iTeam = 0, bHost = false, bReady = false},
---Type <return> to continue, or q <return> to quit---
  tLastState = {iFlags = 0, iX = 0, iY = 0, iAngle = 0, iHookType = 0, iHookX = 0, iHookY = 0, bShoot = false, bCarve = false, iDirection = 0, bMove = false,
    bJump = false, iWeapon = 0}, fLastAngle = -1, fLastUpdateWritten = -9999, vLastUpdatedPos = {x = 0, y = 0}, fLastPosUpdate = -9999, vOldPosOfLastPaket = {
    x = 0, y = 0}, vPreOldPosOfLastPaket = {x = 0, y = 0}, fPreLastPosUpdate = -9999, vLastEstimatedVel = {x = 0, y = 0}, vPreLastEstimatedVel = {x = 0,
    y = 0}, iLastCharge = 255 '�', iLastCurWeapon = 255 '�', cSkin = {bmpSurface = {obj = 0x36b0f0, refCount = 0x36c698, mutex = 0x36e6b0}, bmpNormal = {
      obj = 0x7cf7c0, refCount = 0x7b9900, mutex = 0x8029d0}, bmpMirrored = {obj = 0x802a80, refCount = 0x7e9d28, mutex = 0x802af0}, bmpShadow = {
      obj = 0x7cf670, refCount = 0x7cf708, mutex = 0x7cf6e8}, bmpMirroredShadow = {obj = 0x7cf5c8, refCount = 0x7e9c78, mutex = 0x7e9c58}, bmpPreview = {
      obj = 0x7ea140, refCount = 0x7ea1e8, mutex = 0x802b10}, sFileName = {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x8029fc "default.png"}},
    iColor = 2016, iDefaultColor = 2016, bColorized = true, iBotIcon = -1}, bmpGibs = {obj = 0x7ea248, refCount = 0x8123e8, mutex = 0x7ea288}, cHealthBar = {
    X = 0, Y = 0, LabelX = 0, LabelY = 0, LabelVisible = false, Direction = 0, Position = 100, NumForeStates = 1, NumBgStates = 1, CurrentForeState = 0,
    CurrentBgState = 0, bmpBar = {obj = 0x38f638, refCount = 0x36b3a8, mutex = 0x36b388}, bgColor = 33808, foreColor = 2016}, bWeaponsReady = true,
  bGameReady = false, cGameScript = 0x829980, cWeaponRest = 0x411db3d4, iNumWeaponSlots = 5, iCurrentWeapon = 0, tWeapons = {{Weapon = 0x80fc98, SlotNum = 0,
      Charge = 1, Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x80fa7c, SlotNum = 1, Charge = 1, Reloading = false, LastFire = 0,
      Enabled = false}, {Weapon = 0x80f0c8, SlotNum = 2, Charge = 1, Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x80f3bc, SlotNum = 3,
      Charge = 1, Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x80f134, SlotNum = 4, Charge = 1, Reloading = false, LastFire = 0,
      Enabled = false}, {Weapon = 0x0, SlotNum = 0, Charge = 0, Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x0, SlotNum = 0, Charge = 0,
      Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x0, SlotNum = 0, Charge = 0, Reloading = false, LastFire = 0, Enabled = false}, {
      Weapon = 0x0, SlotNum = 0, Charge = 0, Reloading = false, LastFire = 0, Enabled = false}, {Weapon = 0x0, SlotNum = 0, Charge = 0, Reloading = false,
      LastFire = 0, Enabled = false}}, bNoShooting = false, bFlag = false, bForceWeapon_Name = false, fForceWeapon_Time = 0, nAIState = 0, nAITargetType = 0,
  psAITarget = 0x0, psBonusTarget = 0x0, cPosTarget = {x = 0, y = 0}, nPathStart = {0, 0}, nPathEnd = {0, 0}, fLastCarve = -999, cStuckPos = {x = -999,
    y = -999}, fStuckTime = -9999, bStuck = false, fStuckPause = 0, fLastThink = -9999, cNinjaShotPos = {x = 0, y = 0}, fLastFace = -9999, fSpawnTime = 0,
  fBadAimTime = 0, iAiGameType = 1, iAiGame = 0, iAiTeams = 0, iAiTag = 0, iAiVIP = 0, iAiCTF = 0, iAiTeamCTF = 0, iAiDiffLevel = 0, iRandomSpread = 0,
  vLastShootTargetPos = {x = 0, y = 0}, fLastShoot = -9999, fLastJump = -9999, fLastWeaponChange = 0, fLastCreated = -9999, fLastCompleting = -9999,
---Type <return> to continue, or q <return> to quit---
  fLastRandomChange = 0, fLastGoBack = -9999, fCanShootTime = 0, fRopeAttachedTime = 0, fRopeHookFallingTime = 0, nGridCols = 34, nGridRows = 24,
  fLastPathUpdate = -9999, bPathFinished = true, fSearchStartTime = 0, pathSearcher = 0x8315d8, NEW_psPath = 0x0, NEW_psCurrentNode = 0x0,
  NEW_psLastNode = 0x0, fLastSimulationTime = 36.25}
(gdb) step
920         delete ((searchpath_base*)pathSearcher);
(gdb)
~searchpath_base (this=0x8315d8) at src/common/CWorm_AI.cpp:496
496         breakThreadSignal();
(gdb)
searchpath_base::breakThreadSignal (this=0x8315d8) at src/common/CWorm_AI.cpp:764
764         break_thread_signal = 1;
(gdb)
765      }
(gdb)
~searchpath_base (this=0x8315d8) at src/common/CWorm_AI.cpp:497
497         if(thread) SDL_WaitThread(thread, NULL);
(gdb)
[New LWP 4820]

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4820]
0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1

albert

Re: OLX build for Nokia N800/N810
« Reply #16 on: August 05, 2008, 01:41:06 pm »
Can you perhaps show the backtrace of all other threads when the segfault occurs? (thread apply all bt)

mikkov

Re: OLX build for Nokia N800/N810
« Reply #17 on: August 05, 2008, 01:51:33 pm »
This doesn't help much

Program received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4894]
0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
(gdb) thread apply all bt

Thread 1 (LWP 4894):
#0  0x404be748 in _Unwind_VRS_Pop () from /lib/libgcc_s.so.1
#1  0x404bf44c in ?? () from /lib/libgcc_s.so.1
Cannot access memory at address 0x0

albert

Re: OLX build for Nokia N800/N810
« Reply #18 on: August 05, 2008, 02:01:59 pm »
I think I found the error. As I said so often, we should never copy class instances...

In CServer_Parse.cpp in line 1315, we have:
      *w = worms; // TODO: recode this, it's unsafe!

So true my comment there...

DarkCharlie

Re: OLX build for Nokia N800/N810
« Reply #19 on: August 05, 2008, 02:13:06 pm »
I think I found the error. As I said so often, we should never copy class instances...

In CServer_Parse.cpp in line 1315, we have:
      *w = worms; // TODO: recode this, it's unsafe!

So true my comment there...


I guess why it worked fine on other platforms...
Pages: [1] 2 3  All   Go Up
 

anything