Opened 2 years ago
Closed 2 years ago
#6450 closed defect (fixed)
[BUG] Game breaks
Reported by: | Langbart | Owned by: | Stan |
---|---|---|---|
Priority: | Should Have | Milestone: | Alpha 26 |
Component: | Core engine | Keywords: | |
Cc: | Patch: | Phab:D4529 |
Description (last modified by )
Game crashes for me on macOS.
GIT version: [26594]
Default settings, the entire config
folder was deleted.
to reproduce
- Open the gamesetup
- Click
Start
lldb
entire Terminal output: dpaste.com/GNF7Z9LAR
(lldb) bt * thread #1, name = 'main', queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) * frame #0: 0x00000001010a4320 pyrogenesis`::mozalloc_abort(msg=<unavailable>) at mozalloc_abort.cpp:33:3 [opt] frame #1: 0x0000000101b9c1bd pyrogenesis`::abort() at mozalloc_abort.cpp:82:3 [opt] frame #2: 0x00000001004fa3f6 pyrogenesis`sys_display_error(text=<unavailable>, flags=6) at unix.cpp:268:4 [opt] frame #3: 0x00000001004dcb73 pyrogenesis`debug_DisplayError(wchar_t const*, unsigned long, void*, wchar_t const*, wchar_t const*, int, char const*, long volatile*) [inlined] CallDisplayError(text=L"Function call failed: return value was -110101 (VFS file not found)\r\nLocation: vfs.cpp:196 (GetRealPath)\r\n\r\nCall stack:\r\n\r\n(error while dumping stack: Function not supported)\r\nerrno = 0 (No error reported here)\r\nOS error = ?\r\n", flags=6) at debug.cpp:374:8 [opt] frame #4: 0x00000001004dcb56 pyrogenesis`debug_DisplayError(description=L"Function call failed: return value was -110101 (VFS file not found)", flags=6, context=0x00007ffeefbfcf00, lastFuncToSkip=<unavailable>, pathname=L"../../../source/lib/file/vfs/vfs.cpp", line=196, func=<unavailable>, suppress=0x0000000103b4a9f8) at debug.cpp:460 [opt] frame #5: 0x00000001004dc360 pyrogenesis`debug_OnError(err=-110101, suppress=<unavailable>, file=L"../../../source/lib/file/vfs/vfs.cpp", line=196, func=<unavailable>) at debug.cpp:536:9 [opt] frame #6: 0x00000001004e9e97 pyrogenesis`VFS::GetRealPath(this=0x00000001084050d0, pathname=0x00007ffeefbfd8f0, realPathname=0x00007ffeefbfd8d0, createMissingDirectories=<unavailable>) at vfs.cpp:196:3 [opt] frame #7: 0x00000001002b2703 pyrogenesis`JSI_VFS::WriteJSONFile(scriptInterface=<unavailable>, filePath=L"config/matchsettings.json", val1=<unavailable>) at JSInterface_VFS.cpp:228:9 [opt] frame #8: 0x00000001002b4ddf pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(JSContext*, unsigned int, JS::Value*) [inlined] decltype(__args=<unavailable>, __args=<unavailable>)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)>(fp)(std::__1::forward<ScriptInterface const&>(fp0), std::__1::forward<std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&>(fp0), std::__1::forward<JS::Handle<JS::Value>&>(fp0))) std::__1::__invoke_constexpr<void (*)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, JS::Handle<JS::Value>&>(void (*&&)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >&, JS::Handle<JS::Value>&) at type_traits:3551:1 [opt] frame #9: 0x00000001002b4dd4 pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(JSContext*, unsigned int, JS::Value*) [inlined] decltype(__t=<unavailable>) std::__1::__apply_tuple_impl<void (*)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> >&, 0ul, 1ul, 2ul>(void (*&&)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> >&, std::__1::__tuple_indices<0ul, 1ul, 2ul>) at tuple:1415 [opt] frame #10: 0x00000001002b4dcd pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(JSContext*, unsigned int, JS::Value*) [inlined] decltype(__t=<unavailable>) std::__1::apply<void (*)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> >&>(void (*&&)(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>), std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> >&) at tuple:1424 [opt] frame #11: 0x00000001002b4dcd pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(JSContext*, unsigned int, JS::Value*) [inlined] ScriptFunction::args_info<decltype(&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)))>::return_type ScriptFunction::call<&(object=<unavailable>, args=<unavailable>)), void, std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> > >(void*, std::__1::tuple<ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >, JS::Handle<JS::Value> >&) at FunctionWrapper.h:195 [opt] frame #12: 0x00000001002b4dcd pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(cx=<unavailable>, argc=2, vp=<unavailable>) at FunctionWrapper.h:330 [opt] frame #13: 0x00000001007924d9 pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107820800, native=(pyrogenesis`bool ScriptFunction::ToJSNative<&(JSI_VFS::WriteJSONFile(ScriptInterface const&, std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> > const&, JS::Handle<JS::Value>)), (void* (*)(ScriptRequest const&, JS::CallArgs&))0>(JSContext*, unsigned int, JS::Value*) at FunctionWrapper.h:292), reason=Call, args=0x00007ffeefbfdb90)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:493:13 [opt] frame #14: 0x00000001007923fb pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107820800, args=0x00007ffeefbfdb90, construct=<unavailable>, reason=Call) at Interpreter.cpp:585 [opt] frame #15: 0x0000000100792d76 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:648:10 [opt] [artificial] frame #16: 0x000000010078b9ca pyrogenesis`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000107820800, args=0x00007ffeefbfdb90) at Interpreter.cpp:652:10 [opt] frame #17: 0x000000010078b9c0 pyrogenesis`Interpret(cx=<unavailable>, state=<unavailable>) at Interpreter.cpp:3312 [opt] frame #18: 0x0000000100782c3f pyrogenesis`js::RunScript(cx=0x0000000107820800, state=0x00007ffeefbfdfb0) at Interpreter.cpp:465:10 [opt] frame #19: 0x0000000100792974 pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107820800, args=<unavailable>, construct=<unavailable>, reason=<unavailable>) at Interpreter.cpp:620:13 [opt] frame #20: 0x0000000100792d76 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:648:10 [opt] [artificial] frame #21: 0x0000000100792da9 pyrogenesis`js::Call(cx=0x0000000107820800, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfe0d8, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:665:8 [opt] frame #22: 0x0000000100d0e27e pyrogenesis`js::jit::InvokeFunction(cx=0x0000000107820800, obj=<unavailable>, constructing=<unavailable>, ignoresReturnValue=<unavailable>, argc=0, argv=0x00007ffeefbfe240, rval=JS::MutableHandleValue @ 0x00007ffeefbfe1a0) at VMFunctions.cpp:269:10 [opt] frame #23: 0x0000000100d0e596 pyrogenesis`js::jit::InvokeFromInterpreterStub(cx=<unavailable>, frame=<unavailable>) at VMFunctions.cpp:289:8 [opt] frame #24: 0x000016f1c878cfb4 (lldb)
bisect
I'm pretty sure it's [26544] that breaks the game on startup.
IRC
IRC 0ad-dev (7/Mar/22) related comments
[14:59:57] @Stan Langbart: Uh ... That changes logs... [15:00:43] Langbart does that mean it is not possible it is the buggy commit? [15:01:02] @Stan It's possible just weird [15:02:28] @Stan Looks like it doesn't like checking the real path before writing the file
Attachments (1)
Change History (10)
by , 2 years ago
Attachment: | seg_fault-1.jpg added |
---|
comment:1 by , 2 years ago
Description: | modified (diff) |
---|
comment:2 by , 2 years ago
Summary: | [BUG] Allied view option breaks the game → [BUG] Game breaks |
---|
comment:3 by , 2 years ago
Description: | modified (diff) |
---|
IRC 0ad-dev (7/Mar/22)
[11:57:06] bb Langbart: can't reproduce the alliedView segfault you found
Might just be a macOS issue.
comment:6 by , 2 years ago
Patch: | → Phab:D4529 |
---|
comment:8 by , 2 years ago
Owner: | set to |
---|
comment:9 by , 2 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The option "Allied View" is unimportant, the reason is different.