Ticket #1495 (closed defect: fixed)
Crash on Linux setting a sequence of rally points
| Reported by: | vts | Owned by: | vts |
|---|---|---|---|
| Priority: | Should Have | Milestone: | Alpha 11 |
| Component: | Core engine | Keywords: | |
| Cc: |
Description (last modified by vts) (diff)
halcyonXIII encountered a crash when setting a sequence of rally points for a structure, using svn rev. 11951.
Steps to reproduce:
- Select a building which can produce or garrison units.
- Hold down the Shift key, and set a chain of rally points anywhere.
- Usually on about the 5th rally point, 0AD crashes.
Occasionally, the crash produces this log:
Function call failed: return value was -120000 (Handle index completely out of bounds) Location: h_mgr.cpp:197 (h_data_from_idx) Call stack: (0x7f4caa) ./pyrogenesis() [0x7f4caa] (0x79fc11) ./pyrogenesis() [0x79fc11] (0x7a08ee) ./pyrogenesis() [0x7a08ee] (0x7a00e9) ./pyrogenesis() [0x7a00e9] (0x7c33f3) ./pyrogenesis() [0x7c33f3] (0x7cad95) ./pyrogenesis() [0x7cad95] (0x5e81e4) ./pyrogenesis() [0x5e81e4] (0x675537) ./pyrogenesis() [0x675537] (0x65aade) ./pyrogenesis() [0x65aade] (0x65ad39) ./pyrogenesis() [0x65ad39] (0x65b62c) ./pyrogenesis() [0x65b62c] (0x6510c4) ./pyrogenesis() [0x6510c4] (0x65191f) ./pyrogenesis() [0x65191f] (0x587fa1) ./pyrogenesis() [0x587fa1] (0x41d9b3) ./pyrogenesis() [0x41d9b3] (0x4135d7) ./pyrogenesis() [0x4135d7] errno = 0 (No error reported here) OS error = ?
The crash is confirmed to be reproducible on Linux (tested on flavors of Ubuntu), but not on Windows.
Change History
comment:2 Changed 12 months ago by vts
I can also reproduce this bug on Ubuntu 11.10 x86_64 when placing 5 rally point flags in sequence, with the following error message:
Program received signal SIGSEGV, Segmentation fault.
0x00000000009b750e in CTexture::TryLoad (this=0xfffaffffd22e1e20) at ../../../source/graphics/TextureManager.cpp:544
544 if (m_State == UNLOADED || m_State == PREFETCH_NEEDS_LOADING || m_State == PREFETCH_NEEDS_CONVERTING)
and this backtrace:
(gdb) bt
#0 0x00000000009b750e in CTexture::TryLoad (this=0xfffaffffd22e1e20) at ../../../source/graphics/TextureManager.cpp:544
#1 0x00000000009b74cf in CTexture::GetHandle (this=0xfffaffffd22e1e20) at ../../../source/graphics/TextureManager.cpp:535
#2 0x0000000000aecfb4 in CTexturedLineRData::Render (this=0xf9d16f0, shader=...) at ../../../source/renderer/TexturedLineRData.cpp:44
#3 0x0000000000a7ed64 in OverlayRenderer::RenderTexturedOverlayLines (this=0x16130f0, shader=..., alwaysVisible=true) at ../../../source/renderer/OverlayRenderer.cpp:470
#4 0x0000000000a7eb97 in OverlayRenderer::RenderTexturedOverlayLines (this=0x16130f0) at ../../../source/renderer/OverlayRenderer.cpp:440
#5 0x0000000000a7e7e1 in OverlayRenderer::RenderOverlaysAfterWater (this=0x16130f0) at ../../../source/renderer/OverlayRenderer.cpp:385
#6 0x0000000000a4d741 in CRenderer::RenderSubmissions (this=0x1612230) at ../../../source/renderer/Renderer.cpp:1460
#7 0x0000000000a4e448 in CRenderer::RenderScene (this=0x1612230, scene=...) at ../../../source/renderer/Renderer.cpp:1664
#8 0x00000000009ac7d8 in CGameView::Render (this=0x3a1d160) at ../../../source/graphics/GameView.cpp:494
#9 0x000000000093eb79 in Render () at ../../../source/ps/GameSetup/GameSetup.cpp:228
#10 0x000000000070af72 in Frame () at ../../../source/main.cpp:413
#11 0x000000000070b6f6 in RunGameOrAtlas (argc=2, argv=0x7fffffffe1c8) at ../../../source/main.cpp:529
#12 0x000000000070b9dc in main (argc=2, argv=0x7fffffffe1c8) at ../../../source/main.cpp:572
comment:4 Changed 12 months ago by vts
Valgrind run: http://pastebin.com/j1JMmaEg
comment:5 Changed 12 months ago by historic_bruno
- Cc leper added
r11909 introduced queued rally points
comment:6 Changed 12 months ago by historic_bruno
Similar error on OS X / llvm, when placing the second queued rally point.
Note: See
TracTickets for help on using
tickets.

Historicbruno reports the following:
Sometimes I get a slightly different error, again while placing the 5th waypoint flag:
With this call stack (thread 1 is the relevant bit):
Thread 8 (Thread 0x7fffc54aa700 (LWP 22391)): #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:140 No locals. #1 0x00007ffff176c660 in pa_threaded_mainloop_wait () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #2 0x00007ffff6299e7a in ?? () from /usr/lib/libopenal.so.1 No symbol table info available. #3 0x00007ffff62252ea in ?? () from /usr/lib/libopenal.so.1 No symbol table info available. #4 0x00007ffff4817efc in start_thread (arg=0x7fffc54aa700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffc54aa700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737295555616, 140736503392704, 0, 3, 3394179587834108582, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #5 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #6 0x0000000000000000 in ?? () No symbol table info available. Thread 7 (Thread 0x7fffc9cac700 (LWP 22390)): #0 0x00007ffff4546473 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = <optimized out> oldtype = 0 result = <optimized out> #1 0x00007ffff176c03f in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #2 0x00007ffff175d45c in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #3 0x00007ffff175dac9 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #4 0x00007ffff175db80 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #5 0x00007ffff176bfef in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0 No symbol table info available. #6 0x00007fffefdc3c78 in ?? () from /usr/lib/x86_64-linux-gnu/libpulsecommon-1.0.so No symbol table info available. #7 0x00007ffff4817efc in start_thread (arg=0x7fffc9cac700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffc9cac700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737295555616, 140736578898368, 0, 3, 3394189484512500390, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #8 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #9 0x0000000000000000 in ?? () No symbol table info available. Thread 5 (Thread 0x7fffca7af700 (LWP 22388)): #0 sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86 No locals. #1 0x00007ffff557c618 in SDL_SemWait () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #2 0x0000000000aa5e68 in CTextureConverter::RunThread (data=0x11abdb0) at ../../../source/graphics/TextureConverter.cpp:515 textureConverter = 0x11abdb0 #3 0x00007ffff4817efc in start_thread (arg=0x7fffca7af700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffca7af700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737295555616, 140736590444992, 0, 3, 3394186051223018150, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #4 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #5 0x0000000000000000 in ?? () No symbol table info available. Thread 4 (Thread 0x7fffccdda700 (LWP 22387)): #0 0x00007ffff481f8dd in nanosleep () at ../sysdeps/unix/syscall-template.S:82 No locals. #1 0x00007ffff557e773 in SDL_Delay () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #2 0x00007ffff557e7a2 in ?? () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #3 0x00007ffff5538705 in ?? () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #4 0x00007ffff557c3e9 in ?? () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #5 0x00007ffff4817efc in start_thread (arg=0x7fffccdda700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffccdda700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737488342224, 140736630467008, 0, 3, 3394200590224186022, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #6 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #7 0x0000000000000000 in ?? () No symbol table info available. Thread 3 (Thread 0x7fffcd6dc700 (LWP 22386)): #0 sem_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S:86 No locals. #1 0x00007ffff557c618 in SDL_SemWait () from /usr/lib/libSDL-1.2.so.0 No symbol table info available. #2 0x00000000008ef44c in CUserReporterWorker::Run (this=0x1250e80) at ../../../source/ps/UserReport.cpp:279 proxy = {static npos = <optimized out>, _M_dataplus = {<std::allocator<wchar_t>> = {<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>}, _M_p = 0x7ffff51bb698 L""}} #3 0x00000000008ef1c6 in CUserReporterWorker::RunThread (data=0x1250e80) at ../../../source/ps/UserReport.cpp:236 No locals. #4 0x00007ffff4817efc in start_thread (arg=0x7fffcd6dc700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffcd6dc700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737295555616, 140736639912384, 0, 3, 3394196880446184102, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #5 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #6 0x0000000000000000 in ?? () No symbol table info available. Thread 2 (Thread 0x7fffcdedd700 (LWP 22385)): #0 0x00007ffff454b613 in select () at ../sysdeps/unix/syscall-template.S:82 No locals. #1 0x0000000000c5430c in fam_event_loop () at ../../../source/lib/sysdep/os/linux/dir_watch_fam.cpp:147 fdrset = {fds_bits = {512, 0 <repeats 15 times>}} famfd = 9 #2 0x00007ffff4817efc in start_thread (arg=0x7fffcdedd700) at pthread_create.c:304 __res = <optimized out> pd = 0x7fffcdedd700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, -3394299257482913114, 140737295555616, 140736648305088, 0, 3, 3394197981568424614, 3394288936646859430}, mask_was_saved = 0}}, priv = {pad = { 0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 robust = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #3 0x00007ffff455259d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #4 0x0000000000000000 in ?? () No symbol table info available. Thread 1 (Thread 0x7ffff7fca780 (LWP 22382)): #0 0x00007ffff44a5687 in kill () at ../sysdeps/unix/syscall-template.S:82 No locals. #1 0x0000000000c591d2 in debug_break () at ../../../source/lib/sysdep/os/unix/udbg.cpp:50 No locals. #2 0x0000000000bfc909 in h_data_tag (h=27866499442802754, hd=@0x7fffffffd890) at ../../../source/lib/res/h_mgr.cpp:245 suppress__ = 0 __func__ = "h_data_tag" #3 0x0000000000bfc963 in h_data_tag_type (h=27866499442802754, type=0x11334c0, hd=@0x7fffffffd890) at ../../../source/lib/res/h_mgr.cpp:256 status_ = 140737488345232 __func__ = "h_data_tag_type" #4 0x0000000000bfd915 in h_user_data (h=27866499442802754, type=0x11334c0) at ../../../source/lib/res/h_mgr.cpp:610 hd = 0x7fffede0bcb0 __func__ = "h_user_data" #5 0x0000000000c0898f in ogl_tex_get_texture_id (ht=27866499442802754, id=0x7fffffffd910) at ../../../source/lib/res/graphics/ogl_tex.cpp:1088 __func__ = "ogl_tex_get_texture_id" ot = 0x9916ca0 #6 0x00000000009a5e67 in CShaderProgramARB::BindTexture (this=0x9916c20, id=0xd19fa3 "baseTex", tex=27866499442802754) at ../../../source/graphics/ShaderProgram.cpp:173 h = 0 index = 0 #7 0x0000000000a87b4e in CTexturedLineRData::Render (this=0xa81edd0, shader=...) at ../../../source/renderer/TexturedLineRData.cpp:44 streamFlags = 9 stride = 0 vertexBase = 0x0 indexBase = 0x0 #8 0x0000000000a613a8 in OverlayRenderer::RenderTexturedOverlayLines ( this=0x161ed00, shader=..., alwaysVisible=true) at ../../../source/renderer/OverlayRenderer.cpp:470 line = 0x11474fe0 rdata = 0xa81edd0 i = 3 __func__ = "RenderTexturedOverlayLines" #9 0x0000000000a611db in OverlayRenderer::RenderTexturedOverlayLines ( this=0x161ed00) at ../../../source/renderer/OverlayRenderer.cpp:440 shaderName = 0xd15ba0 "arb/overlayline" shaderTexLineNormal = {px = 0x8e67530, pn = {pi_ = 0x9255700}} los = @0x32355f0 shaderManager = @0x161e350 shaderTexLineAlwaysVisible = {px = 0x9916c20, pn = {pi_ = 0x9232570}} #10 0x0000000000a60e25 in OverlayRenderer::RenderOverlaysAfterWater ( this=0x161ed00) at ../../../source/renderer/OverlayRenderer.cpp:385 __profile = {<No data fields>} profile2__ = {m_Name = 0xd15b8f "overlays (after)"} profile2gpu__ = {m_Name = 0xd15b8f "overlays (after)"} #11 0x0000000000a577f5 in CRenderer::RenderSubmissions (this=0x161de40) at ../../../source/renderer/Renderer.cpp:1460 __profile = {<No data fields>} profile2__ = {m_Name = 0xd12b4a "render submissions"} context = {<CShaderParams<CStrIntern>> = {m_Items = 0x178b640, static s_InternedItems = { table_ = {<boost::unordered_detail::hash_table<boost::unordered_detail::map<CShaderParams<CStrIntern>::SItems, boost::hash<CShaderParams<CStrIntern>::SItems>, std::equal_to<CShaderParams<CStrIntern>::SItems>, std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > > > >> = {<boost::unordered_detail::hash_buckets<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > >, boost::unordered_detail::ungrouped>> = { buckets_ = 0xc4a7d70, bucket_count_ = 79, allocators_ = {<boost::details::compressed_pair_imp<std::allocator<boost::unordered_detail::hash_bucket<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > > > >, std::allocator<boost::unordered_detail::hash_node<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > >, boost::unordered_detail::ungrouped> >, 3>> = {<std::allocator<boost::unordered_detail::hash_bucket<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > > > >> = {<__gnu_cxx::new_allocator<boost::unordered_detail::hash_bucket<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > > > >> = {<No data fields>}, <No data fields>}, <std::allocator<boost::unordered_detail::hash_node<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > >, boost::unordered_detail::ungrouped> >> = {<__gnu_cxx::new_allocator<boost::unordered_detail::hash_node<std::allocator<std::pair<CShaderParams<CStrIntern>::SItems const, boost::shared_ptr<CShaderParams<CStrIntern>::SItems> > >, boost::unordered_detail::ungrouped> >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}}, <boost::unordered_detail::hash_buffered_functions<boost::hash<CShaderParams<CStrIntern>::SItems>, std::equal_to<CShaderParams<CStrIntern>::SItems> >> = {current_ = false, funcs_ = {{ data_ = {buf = "", align_ = 0 '\000'}}, {data_ = { buf = "", align_ = 0 '\000'}}}}, size_ = 61, mlf_ = 1, cached_begin_bucket_ = 0xc4a7d70, max_load_ = 79}, <No data fields>}}}, <No data fields>} waterScissor = {m_Data = {{X = 0.625760198, Y = 0.773907781, Z = -1}, { X = 1, Y = 1, Z = 1}}, static EMPTY = {m_Data = {{ X = 3.40282347e+38, Y = 3.40282347e+38, Z = 3.40282347e+38}, { X = -3.40282347e+38, Y = -3.40282347e+38, Z = -3.40282347e+38}}, static EMPTY = <same as static member of an already seen type>}} #12 0x0000000000a584fc in CRenderer::RenderScene (this=0x161de40, scene=...) at ../../../source/renderer/Renderer.cpp:1664 frustum = {m_aPlanes = {{m_Norm = {X = -1.5724076, Y = -0.57357645, Z = 0.819152057}, m_Dist = -24.4981995}, {m_Norm = { X = 1.5724076, Y = -0.57357645, Z = 0.819152057}, m_Dist = -762.436035}, {m_Norm = {X = 0, Y = 1.14381146, Z = 2.02168012}, m_Dist = -1204.53088}, {m_Norm = {X = 0, Y = -2.29096437, Z = -0.383375943}, m_Dist = 417.59668}, { m_Norm = {X = 0, Y = 0.00056040287, Z = -0.00080037117}, m_Dist = 4.38638306}, {m_Norm = {X = 0, Y = -1.1477133, Z = 1.63910449}, m_Dist = -791.320557}, {m_Norm = {X = 0, Y = 0, Z = 0}, m_Dist = 0}, {m_Norm = {X = 0, Y = 0, Z = 0}, m_Dist = 0}, {m_Norm = {X = 0, Y = 0, Z = 0}, m_Dist = 0}, { m_Norm = {X = 0, Y = 0, Z = 0}, m_Dist = 0}}, m_NumPlanes = 6} #13 0x00000000009e9e4c in CGameView::Render (this=0x3235430) at ../../../source/graphics/GameView.cpp:494 No locals. #14 0x000000000092cf41 in Render () at ../../../source/ps/GameSetup/GameSetup.cpp:228 __profile = {<No data fields>} profile2__ = {m_Name = 0xce4b4e "render"} skystring = {<std::basic_string<char, std::char_traits<char>, std::allocator<char> >> = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x123cc08 "0 0 0"}}, <No data fields>} skycol = {r = 0, g = 0, b = 0, a = 1} #15 0x000000000070b172 in Frame () at ../../../source/main.cpp:413 __profile = {<No data fields>} profile2__ = {m_Name = 0xc8fcf8 "sound update"} realTimeSinceLastFrame = 1.51004779 __func__ = "Frame" need_render = true profile2__ = {m_Name = 0xc8fc66 "frame"} time = 90.913563038000007 need_update = true is_building_archive = false #16 0x000000000070b8f6 in RunGameOrAtlas (argc=1, argv=0x7fffffffe238) at ../../../source/main.cpp:529 args = { m_Args = {<std::_Vector_base<std::pair<CStr8, CStr8>, std::allocator<std::pair<CStr8, CStr8> > >> = { _M_impl = {<std::allocator<std::pair<CStr8, CStr8> >> = {<__gnu_cxx::new_allocator<std::pair<CStr8, CStr8> >> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, m_Arg0 = { path = {static npos = <optimized out>, _M_dataplus = {<std::allocator<wchar_t>> = {<__gnu_cxx::new_allocator<wchar_t>> = {<No data fields>}, <No data fields>}, _M_p = 0x11447b8 L"/home/ben/0ad/binaries/system/pyrogenesis_dbg"}}, separator = 47 L'/'}} ran_atlas = false res = 1.0000000000000001e-09 #17 0x000000000070bbdc in main (argc=1, argv=0x7fffffffe238) at ../../../source/main.cpp:572 No locals.