ID:2058250
 
Resolved
The map renderer crashed in some situations.
BYOND Version:510.1333
Operating System:Windows 10 Pro 64-bit
Web Browser:Chrome 49.0.2623.87
Applies to:Webclient
Status: Resolved (510.1334)

This issue has been resolved.
Descriptive Problem Summary:

A renderer crash happens at random times:

dart.wrapException  @        webclient.dart.js:22146
dart._rootHandleUncaughtError_closure.call$0    @   webclient.dart.js:26335
dart._microtaskLoop     @   webclient.dart.js:24846
dart._startMicrotaskLoop        @   webclient.dart.js:24852
dart._AsyncRun__initializeScheduleImmediate_internalCallback.call$1     @   webclient.dart.js:25073
dart.invokeClosure_closure0.call$0      @   webclient.dart.js:23294
dart._IsolateContext.eval$1     @   webclient.dart.js:21201
dart._callInIsolate     @   webclient.dart.js:20853
dart.invokeClosure      @   webclient.dart.js:22296
(anonymous function)    @   webclient.dart.js:22315


This is the error that it outputs when it happens.
Crap. Is there anything more than that? That just tells me that an exception was caught, not what happened to cause it.
Unfortunately, no, that's all that's being output. It's categorizing that error as 'uncaught', though.
Lummox JR resolved issue with message:
The map renderer crashed in some situations.
Does not seem to have been fixed. Still experiencing crashing in 510.1334:


Dang. I fixed the first renderer crash I saw, and didn't anticipate another one showing up. I'll look into it some more and see what I can find. It would really help if there's any way I can skip the intro.

Where does this crash happen, specifically? The one I fixed happened as soon as I got into combat--I died afterward, not before.
In response to Lummox JR
This one happens immediately after I enter the game, always.
I haven't had that happen.

Can you set Chrome to break on uncaught exceptions? That might let the error through so it actually shows up properly in the debugger, at which point it would give me enough info to go on.
This happens to me every time I host a game and join it for the first time. Refreshing the browser gets it to load properly without the crash reliably every single time.
I've managed to confirm sometimes there's an uncaught exception, but it shows up very intermittently. This sucker has been a bear to catch.
I found a premature completion in the garbage collector that caused an error like this, but it didn't crash the renderer. I fixed up the GC a little bit just to make things a little clearer, but I doubt it will impact anything.

Maybe you could tell me more about how you're entering the game. What exact sequence of steps do you follow? At what exact point does the crash occur (e.g., post intro, when leaving the house, etc.)? Are you using a saved character when this happens?
There are some additional notes I should mention. I tried breaking on uncaught exceptions, and it didn't quite help; at that point it's impossible to tell where the exception came from. I also couldn't break on caught exceptions, even though Chrome lets you do so, because the scrollbar lib you're using has a try/catch that's signalling on a regular basis. (IMO this lib is also interfering with performance, because it has a frequently-running update loop.) It might be feasible to catch this with the scrollbar lib removed, so if you could give me instructions on how to disable that, that might help a lot.

The way I found the garbage collector issue, which I am fairly certain is not your crash, was by putting a breakpoint at the beginning of wrapException() in webclient.dart.js, which should be line 22065 in your version of the file. This caught once during skin init on a param being parsed (there's a try/catch in one of those routines), but after that it only happened once there was a legit exception. If you put a breakpoint there and ignore it during the initialization (just tell the debugger to resume), then the next time it catches you should be able to look in the call stack and get some info about the exception.
In response to Lummox JR
It might be feasible to catch this with the scrollbar lib removed, so if you could give me instructions on how to disable that, that might help a lot.

I'd have to go through and remove every instance of the scrollbar utility being used, otherwise every custom element I've defined would crash and the game would be unplayable / unfit for testing and replicating the crash.

Maybe you could tell me more about how you're entering the game. What exact sequence of steps do you follow? At what exact point does the crash occur (e.g., post intro, when leaving the house, etc.)? Are you using a saved character when this happens?

Well, I'll number the steps:

1) Enter the game's title screen normally.
2) Load an existing character.
3) The game spawns the player in the last recorded location. Before the webclient registers the overlays added to the player, the renderer crashes.
In response to Doohl
Doohl wrote:
Well, I'll number the steps:

1) Enter the game's title screen normally.
2) Load an existing character.
3) The game spawns the player in the last recorded location. Before the webclient registers the overlays added to the player, the renderer crashes.

I can't load an existing character. When I enter the game, my character never ever saves. It would be a big help if you could enable some kind of debug-only local save setup.

Is there a way to get this crash to happen without loading an existing character, starting simply from scratch? Because that's all I can do.
In response to Lummox JR
I'll have to investigate it further, but I am pretty sure you can trigger the crash without loading.

It would be a big help if you could enable some kind of debug-only local save setup.

I'm not sure it's reasonable (given our time constraints) at this point in the development of the game, sorry.
I haven't been able to trigger the crash at all, so if it's triggerable without loading then I need to know how. I fixed the one crash I found, and the only other thing I found that was even close was a non-fatal GC error that will be fixed in 1335.

My guess is there's a specific area of the map where this kind of thing happens, and it obviously isn't in the starting area.
After wiping our savefiles we can't seem to reproduce this renderer crash... It used to happen whenever we entered the game.
Rats. That means the issue is still in play, and will remain so until it reappears unexpectedly.
Yeah. If it happens again, should we send you the savefiles too, maybe?
I thought all the saving was done in your database. If it's a remote DB then I have no control over it.
Page: 1 2