Ticket #915 (closed defect: fixed)
Crash on game exit
| Reported by: | Quix0r | Owned by: | |
|---|---|---|---|
| Priority: | Release Blocker | Milestone: | Alpha 7 |
| Component: | Core engine | Keywords: | |
| Cc: | jan |
Description
The game crashes at exit, see attached crash log for details.
Attachments
Change History
comment:2 Changed 22 months ago by jan
(In [9961]) cleanup and simplification of the really old h_mgr code. replace array-of-pages data structure with demand-committed VM => allows simple allocation of new resources without having to search for the first free index. I suspect the cause of multiple reported bugs (refs #860, #899, #915) was a race. Most issues are fixed, but the pool's freelist also needs to be made thread-safe and lock-free. this has performance and 64-bit portability implications, so I'll leave it for later (Pool is due for some serious refactoring anyway).
please post a comment if this or similar issues persist.
comment:3 Changed 22 months ago by Quix0r
The debug version cannot compile:
ogl_shader.cpp ../../../source/lib/res/graphics/ogl_tex.cpp: In function ‘void warn_if_uploaded(Handle, const OglTex*)’: ../../../source/lib/res/graphics/ogl_tex.cpp:589:14: error: expected primary-expression before ‘>’ token ../../../source/lib/res/graphics/ogl_tex.cpp:588:11: warning: unused variable ‘refs’ [-Wunused-variable] make[1]: *** [obj/lowlevel_Debug/ogl_tex.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [lowlevel] Error 2
gcc --version: gcc (Debian 4.6.0-6) 4.6.1 20110428 (prerelease)
comment:5 Changed 22 months ago by jan
Sorry about that, that typo was fixed shortly thereafter. Interesting that compiling with optimizations enabled worked, though :)
comment:6 Changed 22 months ago by Quix0r
Okay, that worked. And I had that crash after I have played a little on some SP maps.
Got another crash at exit.
comment:7 Changed 22 months ago by Quix0r
It is simple to reproduce:
- Launch 0ad
- Single player -> start with default map, disable AI (unassigned)
- Play a little
- Quit map
- Quit game
comment:9 Changed 21 months ago by historic_bruno
Are you using autostart or going though game setup?
comment:10 Changed 21 months ago by historic_bruno
- Priority changed from Should Have to Must Have
I tested on Ubuntu 11.04 amd64 and got very similar results:
h_mgr: expected handle 7fffee71a620, got 339fb0197
h_mgr.cpp(235): Function call failed: return value was -120003 (Handle tag mismatch (stale reference?))
Function call failed: return value was -120003 (Handle tag mismatch (stale reference?))
Location: h_mgr.cpp:235 (h_data_tag)
Call stack:
(0x77458a) /home/ben/0ad/binaries/system/pyrogenesis() [0x77458a]
(0x71c5d9) /home/ben/0ad/binaries/system/pyrogenesis() [0x71c5d9]
(0x71c850) /home/ben/0ad/binaries/system/pyrogenesis() [0x71c850]
(0x71d364) /home/ben/0ad/binaries/system/pyrogenesis() [0x71d364]
(0x73f287) /home/ben/0ad/binaries/system/pyrogenesis() [0x73f287]
(0x7464a9) /home/ben/0ad/binaries/system/pyrogenesis() [0x7464a9]
(0x73f041) /home/ben/0ad/binaries/system/pyrogenesis() [0x73f041]
(0x73f167) /home/ben/0ad/binaries/system/pyrogenesis() [0x73f167]
(0x71e623) /home/ben/0ad/binaries/system/pyrogenesis() [0x71e623]
(0x557767) /home/ben/0ad/binaries/system/pyrogenesis() [0x557767]
(0x413a25) /home/ben/0ad/binaries/system/pyrogenesis() [0x413a25]
(0x415193) /home/ben/0ad/binaries/system/pyrogenesis() [0x415193]
(0x7ffff46d0eff) /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff) [0x7ffff46d0eff]
(0x411ad9) /home/ben/0ad/binaries/system/pyrogenesis() [0x411ad9]
errno = 0 (No error reported here)
OS error = ?
Sleeping until debugger attaches.
Please wait.
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 25755
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.
(gdb)
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff46e5fe7 in kill () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt full
#0 0x00007ffff46e5fe7 in kill () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1 0x000000000073f291 in h_data_tag_type (h=<value optimized out>,
type=<value optimized out>) at ../../../source/lib/res/h_mgr.cpp:253
suppress__ = 0
#2 h_free (h=<value optimized out>, type=<value optimized out>)
at ../../../source/lib/res/h_mgr.cpp:583
status_ = -120003
h_copy = <value optimized out>
hd = <value optimized out>
#3 0x00000000007464a9 in destroy (c=0x7fffee727e40)
at ../../../source/lib/res/graphics/cursor.cpp:110
No locals.
#4 Cursor_dtor (c=0x7fffee727e40)
at ../../../source/lib/res/graphics/cursor.cpp:178
__func__ = "Cursor_dtor"
#5 0x000000000073f041 in h_free_hd (hd=0x7fffee727e00)
at ../../../source/lib/res/h_mgr.cpp:549
vtbl = <value optimized out>
#6 0x000000000073f167 in Shutdown () at ../../../source/lib/res/h_mgr.cpp:747
hd = 0x7fffee727e00
#7 0x000000000071e623 in ModuleShutdown (initState=0xa84718,
shutdown=0x73f100 <Shutdown()>) at ../../../source/lib/module_init.cpp:71
---Type <return> to continue, or q <return> to quit---
latchedInitState = <value optimized out>
__func__ = "ModuleShutdown"
#8 0x0000000000557767 in Shutdown ()
at ../../../source/ps/GameSetup/GameSetup.cpp:668
LINE_661_ = {m_t0 = 72.122715133,
m_description = 0x7b6700 L"resource modules"}
#9 0x0000000000413a25 in RunGameOrAtlas (argc=<value optimized out>,
argv=<value optimized out>) at ../../../source/main.cpp:493
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 = 0xa8d1c8 L"/home/ben/0ad/binaries/system/pyrogenesis"}}, separator = 47 L'/'}}
ran_atlas = <value optimized out>
res = <value optimized out>
#10 0x0000000000415193 in main (argc=1, argv=0x7fffffffe2c8)
---Type <return> to continue, or q <return> to quit---
at ../../../source/main.cpp:511
No locals.
comment:11 Changed 21 months ago by historic_bruno
- Priority changed from Must Have to Release Blocker
If we can't fix this before release, I'd suggest removing the error or only showing it in debug builds. It would look really ugly to have this in Alpha 7 though :)
Also I'm closing #920 which is a duplicate report.
comment:12 Changed 21 months ago by feneur
I assume Jan will be able to fix it, he's away on a conference currently and won't be home until the 5th though, but hopefully he'll have a moment or two next week.
comment:13 Changed 21 months ago by jan
- Status changed from new to closed
- Resolution set to fixed
