Opened 16 months ago

Last modified 12 months ago

#6699 new defect

[macOS] Memory issue with 27412 — at Version 6

Reported by: Langbart Owned by:
Priority: Must Have Milestone: Backlog
Component: Core engine Keywords:
Cc: Patch:

Description (last modified by Langbart)

to consistently reproduce (1)

  • add this debug message in chatHelper.js
  • binaries/data/mods/public/simulation/ai/petra/chatHelper.js

    a b PETRA.chatNewDiplomacy = function(gameState, player, newDiplomaticStance)  
    220220
    221221PETRA.chatAnswerRequestDiplomacy = function(gameState, player, requestType, response, requiredTribute)
    222222{
     223    warn(uneval(['debug', gameState, player, requestType, response, requiredTribute]))
    223224    Engine.PostCommand(PlayerID, {
    224225        "type": "aichat",
    225226        "message": "/msg " + gameState.sharedScript.playersData[player].name + " " +
  • start the attached replay from ticket #6654 (~2mins long)
  • the game freezes at the 97th turn
  • forcefully quit the pyrogenesis app
  • check activity monitor for spindump
    • For the case described above, the process is always called spindump to allocate large amounts of memory, but the process can also be called sandboxed or ReportCrash in other situations.

to consistently reproduce (2)

  • pass this to the terminal and run
    pyrogenesis -replay-visual="/Users/paria\ crash"
    
  • the game crashes with the following message

  • check activity monitor for ReportCrash
    • same as above with spindump, if I don`t stop the process manually, the PC becomes unusable with time

bisect

[27412]

  • with [27411] the game would also freeze, but once I would forcefully close pyrogenesis no extra process would be eating up my memory
    • screenshot below is from the terminal after I forcefully closed pyrogenesis on [27411]

lldb

❯ lldb /Users/paria/Developer/0ad/binaries/system/pyrogenesis
(lldb) target create "/Users/paria/Developer/0ad/binaries/system/pyrogenesis"
Current executable set to '/Users/paria/Developer/0ad/binaries/system/pyrogenesis' (x86_64).
(lldb) run
Process 30292 launched: '/Users/paria/Developer/0ad/binaries/system/pyrogenesis' (x86_64)
TIMER| InitVfs: 4.318 ms
FILES| Main log written to '/Users/paria/Library/Application Support/0ad/logs/mainlog.html'
FILES| Interesting log written to '/Users/paria/Library/Application Support/0ad/logs/interestinglog.html'
TIMER| CONFIG_Init: 4.892 ms
2023-01-20 07:51:29.481425+0100 pyrogenesis[30292:473289] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x105c57c90> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2023-01-20 07:51:29.516097+0100 pyrogenesis[30292:473289]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
2023-01-20 07:51:29.517053+0100 pyrogenesis[30292:473289]  HALC_ShellDriverPlugIn::Open: Can't get a pointer to the Open routine
Sound: AlcInit success, using Built-in Output
2023-01-20 07:51:30.786611+0100 pyrogenesis[30292:473699] flock failed to lock maps file: errno = 35
2023-01-20 07:51:30.787768+0100 pyrogenesis[30292:473699] flock failed to lock maps file: errno = 35
FILES| UserReport written to '/Users/paria/Library/Application Support/0ad/logs/userreport_hwdetect.txt'
TIMER| RunHardwareDetection: 4.635 ms
FILES| Hardware details written to '/Users/paria/Library/Application Support/0ad/logs/system_info.txt'
TIMER| write_sys_info: 16.725 ms
TIMER| InitRenderer: 36.447 ms
TIMER| ps_console: 10.27 ms
TIMER| ps_lang_hotkeys: 3.191 ms
TIMER| common/modern/setup.xml: 2.435 ms
TIMER| common/modern/styles.xml: 454 us
TIMER| common/modern/sprites.xml: 1.41 ms
TIMER| common/global.xml: 1.139 ms
TIMER| common/setup.xml: 641 us
TIMER| common/sprites.xml: 594 us
TIMER| common/styles.xml: 212 us
TIMER| pregame/backgrounds/: 10.32 ms
TIMER| pregame/sprites.xml: 257 us
TIMER| pregame/styles.xml: 165 us
TIMER| pregame/mainmenu.xml: 58.827 ms
TIMER| common/modern/setup.xml: 346 us
TIMER| common/modern/styles.xml: 263 us
TIMER| common/modern/sprites.xml: 1.991 ms
TIMER| common/global.xml: 444 us
TIMER| common/sprites.xml: 696 us
TIMER| splashscreen/setup.xml: 1.086 ms
TIMER| splashscreen/splashscreen.xml: 17.149 ms
TIMER| common/modern/setup.xml: 234 us
TIMER| common/modern/styles.xml: 245 us
TIMER| common/modern/sprites.xml: 1.634 ms
TIMER| common/setup.xml: 313 us
TIMER| common/sprites.xml: 525 us
TIMER| common/styles.xml: 133 us
TIMER| replaymenu/sprites.xml: 937 us
TIMER| replaymenu/replay_menu.xml: 94.863 ms
Loading 0 cached replays, removed 0 outdated entries, loaded 23 new entries
TIMER| ReloadReplayCache: 32.221 ms
TIMER| GetReplays: 32.252 ms
Starting to replay /Users/paria/Library/Application Support/0ad/replays/0.0.27/2023-01-20_0022/commands.txt
TIMER| common/modern/setup.xml: 205 us
TIMER| common/modern/styles.xml: 237 us
TIMER| common/modern/sprites.xml: 1.359 ms
TIMER| common/global.xml: 380 us
TIMER| common/setup.xml: 260 us
TIMER| common/sprites.xml: 505 us
TIMER| common/styles.xml: 126 us
TIMER| loading/styles.xml: 1.499 ms
TIMER| loading/sprites.xml: 574 us
TIMER| loading/loading.xml: 18.904 ms
Creating playerbases... 0.049432s.
Creating bumps... 0.359240s.
Creating forests... 0.026114s.
Creating grass patches... 0.197126s.
Creating dirt patches... 0.085542s.
Creating big patches... 0.152022s.
Creating stone mines... 0.000517s.
Creating small stone quarries... 0.000163s.
Creating metal mines... 0.000126s.
Creating small decorative rocks... 0.004137s.
Creating large decorative rocks... 0.002268s.
Creating rabbits... 0.005529s.
Creating berry bush... 0.005431s.
Creating sheep... 0.003131s.
Creating straggler trees... 0.005814s.
Creating large grass tufts... 0.008383s.
Creating bushes... 0.005455s.
Total map generation time: 0.918331s.
Total entities: 751, Terrain entities: 53, Textures: 7.
TIMER| ParseTerrain: 4.379 ms
TIMER| ParseEntities: 1.17386 s
TIMER| common/modern/setup.xml: 201 us
TIMER| common/modern/styles.xml: 226 us
TIMER| common/modern/sprites.xml: 1.322 ms
TIMER| common/resources/: 4.344 ms
TIMER| common/global.xml: 366 us
TIMER| common/setup.xml: 281 us
TIMER| common/sprites.xml: 471 us
TIMER| common/styles.xml: 114 us
TIMER| session/setup.xml: 2.36 ms
TIMER| session/sprites.xml: 1.317 ms
TIMER| session/styles.xml: 669 us
TIMER| session/session.xml: 139.62 ms
GAME STARTED, ALL INIT COMPLETE
Executing turn 1 of 572
Executing turn 2 of 572
Executing turn 3 of 572
Executing turn 4 of 572
Executing turn 5 of 572
Executing turn 6 of 572
Executing turn 7 of 572
Executing turn 8 of 572
Executing turn 9 of 572
Executing turn 10 of 572
Executing turn 11 of 572
Executing turn 12 of 572
Executing turn 13 of 572
Executing turn 14 of 572
Executing turn 15 of 572
Executing turn 16 of 572
Executing turn 17 of 572
Executing turn 18 of 572
Executing turn 19 of 572
Executing turn 20 of 572
Executing turn 21 of 572
Executing turn 22 of 572
Executing turn 23 of 572
Executing turn 24 of 572
Executing turn 25 of 572
Executing turn 26 of 572
Executing turn 27 of 572
Executing turn 28 of 572
Executing turn 29 of 572
Executing turn 30 of 572
Executing turn 31 of 572
Executing turn 32 of 572
Executing turn 33 of 572
Executing turn 34 of 572
Executing turn 35 of 572
Executing turn 36 of 572
Executing turn 37 of 572
Executing turn 38 of 572
Executing turn 39 of 572
Executing turn 40 of 572
Executing turn 41 of 572
Executing turn 42 of 572
Executing turn 43 of 572
Executing turn 44 of 572
Executing turn 45 of 572
Executing turn 46 of 572
Executing turn 47 of 572
Executing turn 48 of 572
Executing turn 49 of 572
Executing turn 50 of 572
Executing turn 51 of 572
Executing turn 52 of 572
Executing turn 53 of 572
Executing turn 54 of 572
Executing turn 55 of 572
Executing turn 56 of 572
Executing turn 57 of 572
Executing turn 58 of 572
Executing turn 59 of 572
Executing turn 60 of 572
Executing turn 61 of 572
Executing turn 62 of 572
Executing turn 63 of 572
Executing turn 64 of 572
Executing turn 65 of 572
Executing turn 66 of 572
Executing turn 67 of 572
Executing turn 68 of 572
Executing turn 69 of 572
Executing turn 70 of 572
Executing turn 71 of 572
Executing turn 72 of 572
Executing turn 73 of 572
Executing turn 74 of 572
Executing turn 75 of 572
Executing turn 76 of 572
Executing turn 77 of 572
Executing turn 78 of 572
Executing turn 79 of 572
Executing turn 80 of 572
Executing turn 81 of 572
Executing turn 82 of 572
Executing turn 83 of 572
Executing turn 84 of 572
Executing turn 85 of 572
Executing turn 86 of 572
Executing turn 87 of 572
Executing turn 88 of 572
Executing turn 89 of 572
Executing turn 90 of 572
Executing turn 91 of 572
Executing turn 92 of 572
Executing turn 93 of 572
Executing turn 94 of 572
Executing turn 95 of 572
Executing turn 96 of 572
Executing turn 97 of 572
pyrogenesis was compiled with optimization - stepping may behave oddly; variables may not be available.
Process 30292 stopped
* thread #1, name = 'main', queue = 'com.apple.main-thread', stop reason = signal SIGTERM
    frame #0: 0x0000000100a004dc pyrogenesis`JSString* js::ToStringSlow<(js::AllowGC)1>(cx=0x0000000107012000, arg=<unavailable>)1>::HandleType) at Barrier.h:0:31 [opt]
   1    /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
   2     * vim: set ts=8 sts=2 et sw=2 tw=80:
   3     * This Source Code Form is subject to the terms of the Mozilla Public
   4     * License, v. 2.0. If a copy of the MPL was not distributed with this
   5     * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
   6    
   7    #ifndef gc_Barrier_h
Target 0: (pyrogenesis) stopped.
(lldb) bt
* thread #1, name = 'main', queue = 'com.apple.main-thread', stop reason = signal SIGTERM
  * frame #0: 0x0000000100a004dc pyrogenesis`JSString* js::ToStringSlow<(js::AllowGC)1>(cx=0x0000000107012000, arg=<unavailable>)1>::HandleType) at Barrier.h:0:31 [opt]
    frame #1: 0x0000000100a0fdef pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] JSString* js::ToString<(js::AllowGC)1>(cx=0x0000000107012000, v=JS::HandleValue @ r14) at StringType.h:1801:10 [opt]
    frame #2: 0x0000000100a0fde4 pyrogenesis`js::ValueToSource(cx=<unavailable>, v=JS::HandleValue @ r14) at ToSource.cpp:152 [opt]
    frame #3: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf70c8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #4: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #5: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf7450) at Object.cpp:158:19 [opt]
    frame #6: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf7428)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #7: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf7428, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #8: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #9: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf7428, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #10: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #11: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #12: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf75d8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #13: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #14: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf7960) at Object.cpp:158:19 [opt]
    frame #15: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf7938)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #16: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf7938, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #17: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #18: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf7938, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #19: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #20: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #21: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf7ae8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #22: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #23: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf7e70) at Object.cpp:158:19 [opt]
    frame #24: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf7e48)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #25: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf7e48, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #26: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #27: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf7e48, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #28: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #29: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #30: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf7ff8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #31: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #32: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf8380) at Object.cpp:158:19 [opt]
    frame #33: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf8358)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #34: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf8358, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #35: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #36: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf8358, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #37: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #38: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #39: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf8508, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #40: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #41: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf8890) at Object.cpp:158:19 [opt]
    frame #42: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf8868)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #43: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf8868, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #44: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #45: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf8868, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #46: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #47: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #48: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf8a18, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #49: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #50: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf8da0) at Object.cpp:158:19 [opt]
    frame #51: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf8d78)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #52: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf8d78, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #53: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #54: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf8d78, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #55: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #56: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #57: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf8f28, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #58: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #59: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf92b0) at Object.cpp:158:19 [opt]
    frame #60: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf9288)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #61: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf9288, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #62: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #63: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf9288, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #64: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #65: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #66: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf9438, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #67: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #68: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbf97c0) at Object.cpp:158:19 [opt]
    frame #69: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf9798)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #70: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf9798, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #71: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #72: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf9798, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #73: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #74: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #75: 0x000000010080437d pyrogenesis`js::ArrayToSource(cx=<unavailable>, obj=JS::HandleObject @ r14) at Array.cpp:1075:13 [opt]
    frame #76: 0x000000010081d274 pyrogenesis`array_toSource(cx=0x0000000107012000, argc=0, vp=<unavailable>) at Array.cpp:1119:19 [opt]
    frame #77: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbf9b28)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #78: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbf9b28, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #79: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #80: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbf9b28, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #81: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #82: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #83: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbf9cd8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #84: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #85: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfa060) at Object.cpp:158:19 [opt]
    frame #86: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfa038)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #87: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfa038, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #88: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #89: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfa038, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #90: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #91: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #92: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfa1e8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #93: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #94: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfa570) at Object.cpp:158:19 [opt]
    frame #95: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfa548)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #96: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfa548, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #97: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #98: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfa548, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #99: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #100: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #101: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfa6f8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #102: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #103: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfaa80) at Object.cpp:158:19 [opt]
    frame #104: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfaa58)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #105: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfaa58, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #106: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #107: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfaa58, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #108: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #109: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #110: 0x000000010080437d pyrogenesis`js::ArrayToSource(cx=<unavailable>, obj=JS::HandleObject @ r14) at Array.cpp:1075:13 [opt]
    frame #111: 0x000000010081d274 pyrogenesis`array_toSource(cx=0x0000000107012000, argc=0, vp=<unavailable>) at Array.cpp:1119:19 [opt]
    frame #112: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfade8)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #113: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfade8, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #114: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #115: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfade8, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #116: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #117: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #118: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfaf98, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #119: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #120: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfb320) at Object.cpp:158:19 [opt]
    frame #121: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfb2f8)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #122: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfb2f8, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #123: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #124: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfb2f8, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #125: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #126: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #127: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfb4a8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #128: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #129: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfb830) at Object.cpp:158:19 [opt]
    frame #130: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfb808)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #131: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfb808, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #132: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #133: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfb808, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #134: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #135: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #136: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfb9b8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #137: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #138: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfbd40) at Object.cpp:158:19 [opt]
    frame #139: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfbd18)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #140: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfbd18, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #141: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #142: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfbd18, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #143: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #144: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #145: 0x0000000100849490 pyrogenesis`js::ObjectToSource(this=0x00007ffeefbfbec8, id=JS::HandleId @ r14, val=JS::HandleValue @ rbp, kind=Normal)::$_4::operator()(JS::Handle<JS::PropertyKey>, JS::Handle<JS::Value>, PropertyKind) const at Object.cpp:331:32 [opt]
    frame #146: 0x0000000100848f11 pyrogenesis`js::ObjectToSource(cx=0x0000000107012000, obj=JS::HandleObject @ r15) at Object.cpp:0 [opt]
    frame #147: 0x0000000100857bc7 pyrogenesis`obj_toSource(cx=0x0000000107012000, argc=<unavailable>, vp=0x00007ffeefbfc250) at Object.cpp:158:19 [opt]
    frame #148: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfc228)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #149: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfc228, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #150: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #151: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfc228, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #152: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #153: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #154: 0x000000010080437d pyrogenesis`js::ArrayToSource(cx=<unavailable>, obj=JS::HandleObject @ r14) at Array.cpp:1075:13 [opt]
    frame #155: 0x000000010081d274 pyrogenesis`array_toSource(cx=0x0000000107012000, argc=0, vp=<unavailable>) at Array.cpp:1119:19 [opt]
    frame #156: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfc5b8)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #157: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfc5b8, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #158: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #159: 0x00000001007f8cf9 pyrogenesis`js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ scalar, thisv=JS::HandleValue @ scalar, args=0x00007ffeefbfc5b8, rval=JS::MutableHandleValue @ r14, reason=<unavailable>) at Interpreter.cpp:588:8 [opt]
    frame #160: 0x0000000100a10162 pyrogenesis`js::ValueToSource(JSContext*, JS::Handle<JS::Value>) [inlined] js::Call(cx=0x0000000107012000, fval=JS::HandleValue @ r13, thisObj=<unavailable>, rval=JS::MutableHandleValue @ r14) at Interpreter.h:99:10 [opt]
    frame #161: 0x0000000100a10123 pyrogenesis`js::ValueToSource(cx=0x0000000107012000, v=<unavailable>) at ToSource.cpp:173 [opt]
    frame #162: 0x000000010096fa71 pyrogenesis`str_uneval(cx=<unavailable>, argc=<unavailable>, vp=0x0000000123e13ad8) at String.cpp:370:19 [opt]
    frame #163: 0x00000001007f83fd pyrogenesis`js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) [inlined] CallJSNative(cx=0x0000000107012000, native=<unavailable>, reason=Call, args=0x00007ffeefbfc7e0)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) at Interpreter.cpp:426:13 [opt]
    frame #164: 0x00000001007f832c pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfc7e0, construct=<unavailable>, reason=Call) at Interpreter.cpp:511 [opt]
    frame #165: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #166: 0x00000001007f202a pyrogenesis`Interpret(JSContext*, js::RunState&) [inlined] js::CallFromStack(cx=0x0000000107012000, args=0x00007ffeefbfc7e0) at Interpreter.cpp:575:10 [opt]
    frame #167: 0x00000001007f2020 pyrogenesis`Interpret(cx=0x0000000107012000, state=0x00007ffeefbfcbe0) at Interpreter.cpp:3226 [opt]
    frame #168: 0x00000001007e9f71 pyrogenesis`js::RunScript(cx=0x0000000107012000, state=0x00007ffeefbfcbe0) at Interpreter.cpp:395:13 [opt]
    frame #169: 0x00000001007f8796 pyrogenesis`js::InternalCallOrConstruct(cx=0x0000000107012000, args=0x00007ffeefbfcd10, construct=NO_CONSTRUCT, reason=<unavailable>) at Interpreter.cpp:543:13 [opt]
    frame #170: 0x00000001007f8cc3 pyrogenesis`InternalCall(cx=<unavailable>, args=<unavailable>, reason=<unavailable>) at Interpreter.cpp:571:10 [opt] [artificial]
    frame #171: 0x00000001007f8c22 pyrogenesis`js::CallFromStack(cx=<unavailable>, args=<unavailable>) at Interpreter.cpp:575:10 [opt] [artificial]
    frame #172: 0x0000000100d76a2a pyrogenesis`js::jit::DoCallFallback(cx=<unavailable>, frame=<unavailable>, stub=0x0000000107ddbd28, argc=<unavailable>, vp=<unavailable>, res=JS::MutableHandleValue @ 0x00007ffeefbfcc90) at BaselineIC.cpp:1595:10 [opt]
    frame #173: 0x00000e7add817d88
(lldb) 

related ticket

  • #6697 is the ticket where I documented the consumption of my memory and mistakenly assumed it had something to do with 0ad/library/ changes
    • instead of rewriting the ticket, this ticket was created

Change History (9)

by Langbart, 16 months ago

Attachment: terminal.png added

comment:1 by Stan, 16 months ago

In your case it's printing the game state thousands of times that crashes the game. Is it just a way to make it faster? Can't be vulkan if it happened before. So it's Spidermonley most likely but it's probably cause we're doing something it does not like

in reply to:  1 comment:2 by Langbart, 16 months ago

Replying to Stan‘:

In your case it's printing the game state thousands of times that crashes the game. Is it just a way to make it faster? Can't be vulkan if it happened before. So it's Spidermonley most likely but it's probably cause we're doing something it does not like

the issue is not about the lldb (ignore that), it about an external processing spinning up called spindump.

comment:3 by wraitii, 16 months ago

@langbart -> Did this happen to you in regular play? Or just when adding some debugs?

comment:4 by Stan, 16 months ago

spindump and sandboxd are macOS diagnostic applications apparently.

Last edited 16 months ago by Stan (previous) (diff)

in reply to:  3 comment:5 by Langbart, 16 months ago

Replying to wraitii:

@langbart -> Did this happen to you in regular play? Or just when adding some debugs?

  • I have also noticed it in a regular game but have not found consistently reproducible steps.

comment:6 by Langbart, 16 months ago

Description: modified (diff)

The description was extended by another possibility to reproduce the problem consistently.

by Langbart, 16 months ago

Attachment: term_report.png added

by Langbart, 16 months ago

Attachment: ReportCrash.png added
Note: See TracTickets for help on using tickets.