Web Player Data Execution Prevention

We have a “game” that runs in a web page, and I have a customer that’s having fits with the web player. He seems to have a pretty low end graphics card. Its an Intel(R) G41 Express Chipset, 128MB Display Memory … Details below.

They seem to be able to load the Unity Web Player OK, but when it tries to read our content (*.unity3d) it crashes. Our quality levels are all set to the default “Fastest” settings (lowest levels). See attachment for details.

After it crashes, he gets an error saying:

“The instruction at … referenced memory at … The memory could not be written”

followed by a Windows Data Execution Prevention warning indicating that an add on was trying to use system memory incorrectly.

The customer claims to have followed the steps to exclude Unity from the Windows DEP, but said this did not help.

If the problem is the DEP, what specific file needs to be excluded? Its not the installer, but some other unity executable right? Which one?

Or, does anyone have any other thoughts about what’s going on?

-----------------
System Information
------------------
Time of this report: 11/5/2010, 06:55:33
       Machine name: M366A051250
   Operating System: Windows XP Professional (5.1, Build 2600) Service Pack 3 (2600.xpsp_sp3_gdr.100427-1636)
           Language: English (Regional Setting: English)
System Manufacturer: LENOVO
       System Model: 7279A13
               BIOS: 08.00.15.LENOVO BIOS Rev: 5HKT50A01.0.2010.0204.110446
          Processor: Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz (2 CPUs)
             Memory: 1918MB RAM
          Page File: 424MB used, 3257MB available
        Windows Dir: C:\WINDOWS
    DirectX Version: DirectX 9.0c (4.09.0000.0904)
DX Setup Parameters: Not found
     DxDiag Version: 5.03.2600.5512 32bit Unicode
  DxDiag Previously: Crashed in DirectInput (stage 1)

------------
DxDiag Notes
------------
  DirectX Files Tab: No problems found.
      Display Tab 1: No problems found.
        Sound Tab 1: No problems found.
          Music Tab: No problems found.
          Input Tab: 
        Network Tab: No problems found.

--------------------
DirectX Debug Levels
--------------------
Direct3D:    0/4 (n/a)
DirectDraw:  0/4 (retail)
DirectInput: 0/5 (n/a)
DirectMusic: 0/5 (n/a)
DirectPlay:  0/9 (retail)
DirectSound: 0/5 (retail)
DirectShow:  0/6 (retail)

---------------
Display Devices
---------------
        Card name: Intel(R) G41 Express Chipset
     Manufacturer: Intel Corporation
        Chip type: Intel(R) 4 Series Express Chipset Family
         DAC type: Internal
       Device Key: Enum\PCI\VEN_8086&DEV_2E32&SUBSYS_305217AA&REV_03
   Display Memory: 128.0 MB
     Current Mode: 1024 x 768 (32 bit) (60Hz)
          Monitor: Default Monitor
  Monitor Max Res: 
      Driver Name: igxprd32.dll
   Driver Version: 6.14.0010.5212 (English)
      DDI Version: 9 (or higher)
Driver Attributes: Final Retail
 Driver Date/Size: 2/21/2010 10:01:18, 57344 bytes
      WHQL Logo'd: n/a
  WHQL Date Stamp: n/a
              VDD: n/a
         Mini VDD: igxpmp32.sys
    Mini VDD Date: 2/21/2010 10:01:18, 1913728 bytes
Device Identifier: {D7B78E66-6D72-11CF-4660-5810A2C2CB35}
        Vendor ID: 0x8086
        Device ID: 0x2E32
        SubSys ID: 0x305217AA
      Revision ID: 0x0003
      Revision ID: 0x0003
      Video Accel: 
 Deinterlace Caps: n/a
         Registry: OK
     DDraw Status: Enabled
       D3D Status: Enabled
       AGP Status: Not Available
DDraw Test Result: Not run
 D3D7 Test Result: Not run
 D3D8 Test Result: Not run
 D3D9 Test Result: Not run

422376--14670--$qualitySettings.png

Hi Tom,

DEP just means that Windows detected something odd happening with memory. (Usually means code is being executed from a data segment.) Unity does not do anything like this in a webplayer. Your customer should not have do do anything in Windows to manage the DEP settings. I think what your customer is seeing is a bug. Something is going wrong when Unity plays back the content. What is impossible to say at the moment is whether this is a bug in Unity or the content. My suspicion would be that there’s something in the content that your customers machine does not like. It might make some sense if you can put together a mini version of your game, or build a very very simple webplayer that you can give to your customer to see whether it’s all content or just some that cause problems. (All content might indicate a bug in Unity.)

The only time I have seen a Unity webplayer receive a kill due to DEP is when sockets have been closed early and Mono gets confused. I think data being written to the socket is seen by Windows as illegal memory access. If your “game” uses sockets try disabling them and get that build to your customer.

Note that Unity writes out a web player log. Look at:

http://unity3d.com/support/documentation/Manual/Log%20Files.html

for the locations. There might be something in your customers log file that can help.

Thanks,
Graham

what browser do they use? potentially Win Vista+ with IE7 or 8 on UAC protectected mode?

SOLVED (I think) …

The issue is that I had an object in my project with a text asset assigned JUST for development purposes. I then built my web player content, leaving this text asset unassigned (as opposed to removing it or assigning a file to it). This caused a real problem for some.

Thanks so much for the help. (Assuming the issue is in fact solved) the tip to look into my own content and look through the web player log file was a huge help and will be part of my normal routine from here out!