Crash: R6025 pure virtual function call in webplayer_win.dll

Since yesterday the webplayer in Chrome and Firefox regular crashes on multiple machines with the following Runtime Error:

R6025
 - pure virtual function call

This is the problem signature of the crash:

Problem signature:
  Problem Event Name:	APPCRASH
  Anwendungsname:	chrome.exe
  Anwendungsversion:	23.0.1271.95
  Anwendungszeitstempel:	50b5708f
  Fehlermodulname:	webplayer_win.dll
  Fehlermodulversion:	4.0.0.62010
  Fehlermodulzeitstempel:	50a152c3
  Ausnahmecode:	40000015
  Ausnahmeoffset:	004365a0
  Betriebsystemversion:	6.1.7601.2.1.0.768.3
  Gebietsschema-ID:	1031
  Zusatzinformation 1:	c5c2
  Zusatzinformation 2:	c5c29e8f4f6bf83b41795bdf9997754d
  Zusatzinformation 3:	6a95
  Zusatzinformation 4:	6a95f20d9ec4391d3268e90394cee429

We tested older versions of our game, that none of our recent changes is causing this issue.
Is there a work around for this crash?
A quick help would be very appreciated.
Thanks in advance

UPDATE:
The crash only occurs with Unity Engine 4.0.0
It does not occur with Unity Engine 3.5.6f4.
Looks like Unity Engine 4 is not 100 % backwards compatible.

UPDATE 2:
What do I have to do, to inform the Unity team that this bug has been introduced with Unity 4.0?

Unity 4.0 is rather glitchy. Even after the release. I’ve converted my 3.5 project to 4.0 and it’s behaving strangely. It seems like the Unity team has modified the Mono core heavily, cause I’ve definitely got low level bugs while building for iOS. One of them is weird comparison of enums (variable, containing one value equals to completely different constant), another is a strange call to .ToString() method when it shouldn’t (as if it has got wrong value from the vtable).

So the best option is to AVOID UNITY 4.0 COMPLETELY as it is not ready for production yet (shame on Unity’s QA or Management). Right now I’m converting my project back to 3.5 - requires a bit of manual work.

Another good thing is to file a bug report via Unity Bug Reporter app (it’s bundled together with the Unity app) and to attach your project to help the devs pinpoint the bug quickly.

P.S.
There are rumors that Unity’s support is not very helpful and responsive when it goes to such bugs :slight_smile:

Do you have collision detection enabled on any particles systems? I had this same crash and it seemed to be coming from there

We get this crash on the PC in the editor and not in the editor. It has appeared since we updated to 4.x. We would be glad to work directly with the Unity team on reproducing this.

-------------- More ---------------------
I greatly reduced this bug by fixing a mistake in our code. Don’t do this…

class Foo
{
    public static Dictionary allFoos = new Dictionary();

    public int uid;

    public Foo( int uid )
    {
        this.uid = uid;
        allFoo[uid] = this;
    }

    ~Foo()
    {
        // DANGER - Because this Foo is in the list it will never get garbage collected
        // so this never gets called and so garbage builds up forever.
        
        allFoo.Remove(uid);
    }

}

Our code has a static method to remove world objects and because the destructor never got called only partial cleanup was done. This later confused Unity GameObject and caused the culling algorithm to really get trashed. Instead all WorldObject subclasses have a virtual preDelete() method to do cleanup and list removal.

-------------- More ---------------------

I used Visual Studio to attach to the crashed game. The stack shows it died in scene culling, which I believe is completely new code in Unity 4.x

the stack is… ( Greater than and less than symbols changed to GT and LT so HTML is not trashed . )

Not Flagged		21856	0	Main Thread	Main Thread	Unity.exe!__crtMessageBoxW	Normal
 	 	 	 	 	 	[External Code]	 
 	 	 	 	 	 	[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]	 
 	 	 	 	 	 	Unity.exe!__crtMessageBoxW(const wchar_t * lpText, const wchar_t * lpCaption, unsigned int uType) Line 97	 
 	 	 	 	 	 	GameOverlayRenderer.dll!223918e9()	 
 	 	 	 	 	 	GameOverlayRenderer.dll!223918e9()	 
 	 	 	 	 	 	Unity.exe!__crtMessageBoxW(const wchar_t * lpText, const wchar_t * lpCaption, unsigned int uType) Line 158	 
 	 	 	 	 	 	Unity.exe!_NMSG_WRITE(int rterrnum) Line 290	 
 	 	 	 	 	 	Unity.exe!_purecall() Line 56	 
 	 	 	 	 	 	Unity.exe!CullAllPerObjectLights(const CullingDynamicArrayLTVisibleNodeGT & visibleNodes, const ActiveLights & lights, const int renderPath, CullingDynamicArray & forwardLightIndices, CullingDynamicArray LT unsigned int GT & forwardLightOffsets) Line 132	 
 	 	 	 	 	 	Unity.exe!CullLights(const SceneCullingParameters & cullingParameters, CullResults & results) Line 178	 
 	 	 	 	 	 	Unity.exe!CullScene(SceneCullingParameters & cullingParameters, CullResults & results) Line 233	 
 	 	 	 	 	 	Unity.exe!Camera::CustomCull(const CameraCullingParameters & parameters, CullResults & results) Line 993	 
 	 	 	 	 	 	Unity.exe!Camera::Cull(CullResults & results) Line 801	 
 	 	 	 	 	 	Unity.exe!RenderManager::RenderCameras() Line 89	 
 	 	 	 	 	 	Unity.exe!RenderGameViewCameras(const RectTLTfloatGT & guiRect, bool gizmos, bool gui) Line 178	 
 	 	 	 	 	 	Unity.exe!EditorGUIUtility_CUSTOM_INTERNAL_CALL_RenderGameViewCameras(const RectTLTfloatGT & cameraRect, short gizmos, short gui) Line 224	 
 	 	 	 	 	 	[External Code]	 
 	 	 	 	 	 	mono.dll!mono_jit_runtime_invoke(_MonoMethod * method, void * obj, void * * params, MonoObject * * exc) Line 4889	 
 	 	 	 	 	 	mono.dll!mono_runtime_invoke(_MonoMethod * method, void * obj, void * * params, MonoObject * * exc) Line 2618	 
 	 	 	 	 	 	mono.dll!mono_runtime_invoke_array(_MonoMethod * method, void * obj, MonoArray * params, MonoObject * * exc) Line 3822	 
 	 	 	 	 	 	mono.dll!ves_icall_InternalInvoke(_MonoReflectionMethod * method, MonoObject * this, MonoArray * params, _MonoException * * exc) Line 2856	 
 	 	 	 	 	 	[External Code]	 
 	 	 	 	 	 	mono.dll!mono_jit_runtime_invoke(_MonoMethod * method, void * obj, void * * params, MonoObject * * exc) Line 4889	 
 	 	 	 	 	 	mono.dll!mono_runtime_invoke(_MonoMethod * method, void * obj, void * * params, MonoObject * * exc) Line 2618	 
 	 	 	 	 	 	Unity.exe!scripting_method_invoke(ScriptingMethod * method, MonoObject * object, ScriptingArguments & arguments, MonoException * * exception) Line 183	 
 	 	 	 	 	 	Unity.exe!ScriptingInvocationNoArgs::Invoke(MonoException * * exception) Line 97	 
 	 	 	 	 	 	Unity.exe!MonoBehaviour::DoGUI(MonoBehaviour::GUILayoutType layoutType, int skin) Line 401	 
 	 	 	 	 	 	Unity.exe!GUIView::OnInputEvent(InputEvent & event) Line 1962	 
 	 	 	 	 	 	Unity.exe!GUIView::DoPaint() Line 1198	 
 	 	 	 	 	 	Unity.exe!GUIView::RepaintAll(bool performAutorepaint) Line 2233	 
 	 	 	 	 	 	Unity.exe!Application::UpdateScene(bool doRepaint) Line 2337	 
 	 	 	 	 	 	Unity.exe!Application::UpdateSceneIfNeeded() Line 2216	 
 	 	 	 	 	 	Unity.exe!Application::TickTimer() Line 1319	 
 	 	 	 	 	 	Unity.exe!MainMessageLoop() Line 336	 
 	 	 	 	 	 	Unity.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * hPrev, char * szCmdLine, int nCmdShow) Line 848	 
 	 	 	 	 	 	Unity.exe!__tmainCRTStartup() Line 275	 
 	 	 	 	 	 	[External Code]