Intel® Graphics Performance Analyzers (Intel® GPA)
Improve your game's performance by quickly specifying problem areas

shimd3d crash

fboivin
Beginner
757 Views
Hi,
we have 2 serious issue with GPA (using R2012 R1 but we've been having them with previous versions also). Our main process creates satellite processes and it seems the CreateProcess call goes through GPA shim dll.
1. If we don't have GPA running (ie: GPA monitor) it will sometime (not 100%) crash in the satellite process creation before our own code entry point. Note that prior to R2012 R1 if GPAMonitor wasn't running we never had this issue (now it seems that even though it's not running it's going trough the shim dll)
> RtlAllocateHeap() + 0x3d bytes
0000000003ea79c1
[Frames below may be incorrect and/or missing, no symbols loaded for shimd3d64.dll]
0000000003e96293
0000000003e923e9
0000000003e924a7
LdrpInitializeThread() + 0x23c bytes
_LdrpInitialize() + 0x9f bytes
LdrInitializeThunk() + 0xe bytes
2. If GPA Monitor is running, the CreateProcess calls return TRUE but the processes are never created (they don't show up in ProcessExplorer) whereas they show up right away when GPAMonitor isn't running. Here is the CreateProcess code we are using (with inlined comments on the behaviour with GPA):
DWORD const creationflags = NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW | DETACHED_PROCESS | CREATE_BREAKAWAY_FROM_JOB;
if (::CreateProcess(0, command, NULL, NULL, TRUE, creationflags, NULL, NULL, &si, π))
{
// The CreateProcess call succeeds but the process seems to be silently killed (no crash, no warning, no nothing)
if (!::AssignProcessToJobObject(m_jobObject, pi.hProcess))
{
// This will fail and return error code 5 (Access denied) since the process doesn't exist
Trace("Failed to attach process to job: %d", GetLastError());
}
return true;
}
Is there any workaround to this?
Thanks
Francis
0 Kudos
5 Replies
Neal_Pierman
Valued Contributor I
757 Views
Hello Francis,

Sorry that you are running into these problems.

First of all, can you right-click on the GPA Monitor icon in the notification tray area and copy the "About..." information here? This will provide some info on your specific configuration which we'll need.

Also, are you running Intel GPA with or without the "auto-detect launched applications" option enabled? Would you also run the "other way" and let me know if the symptoms change in any way.

Once I have this info we'll be able to do some analysis and attempt to figure out what might be the cause of the issues you are seeing.

thanks!

Neal
0 Kudos
Neal_Pierman
Valued Contributor I
757 Views
Hello,

We've tried reproducing this problem internally, but haven't been able to see the errors you are seeing.

The development team is therefore requesting some additional information from you:
  • Your specific configuration (right-click on the GPA Monitor icon and select "About...").
  • Are you running with "auto-detect launched applications" mode or not?
  • Is tracing enabled?
  • For your target and child processes, are they both graphics / ITT instrumented? Are they 32-bit or 64-bit?
  • Some simple sample code that reproduces the problem (ourattempt to create a sample based on the code snippet you provided didn't demonstrate the problem).
  • What anti-virus software are you using, and what modules are enabled? We've seen some issues with McAfee Host Intrusion Prevention that conflicts with GPA instrumentation (including the CreateProcess function).

Regards,

Neal

0 Kudos
fboivin
Beginner
757 Views
Here is the info I gathered (sorry for the delay).
    • Launching the 64 bits version of our game editor in both "Auto-Detect" and "Manual" modes reproduces the issue I mentionned about the processes being killed.
    • Launching the 32 bits version of our game editor in both "Auto-Detect" and "Manual" modes doesn't reproduce the issue I mentionned about the satellite processes being killed. However, when comes the time to render the first frame, the application seems to be violently killed as it doesn't even break in the debugger and quits.
    • Launching both 32 and 64 bits version of our standalone game (which doesn't create any child processes) works flawlessly.
    • Tracing isn't enabled
    • The child processes aren't graphics (ie: they don't create any 3D device) and are not instrumented
    • Anti-virus software is Microsoft ForeFront
    • I don't have a simple repro sample right now, but I'll try to build one.
Configuration:
Windows 7, 64-bit DEP enabled
Num Processors: 8
Memory: 12279MB
System BIOS: LENOVO 60KT43AUS (04/08/2011)
Video BIOS: 12/07/11
Driver 0:
Device: AMD Radeon HD 7900 Series
Provider: Advanced Micro Devices, Inc.
Date: 3-8-2012
Version: 8.951.0.0
VendorId: 1002
ProductId: 6798
Stepping: 0
No support for GPA Instrumentation
GPA install directory: C:\Program Files\Intel\GPA\2012 R1\
GPA version: 12.1.166792
Current user is in Administrators group: YES
Current GPA 2012 R1 (12.1.166792)
Windows 7, 64-bit DEP enabledNum Processors: 8Memory: 12279MBSystem BIOS: LENOVO 60KT43AUS (04/08/2011)Video BIOS: 12/07/11Driver 0: Device: AMD Radeon HD 7900 Series Provider: Advanced Micro Devices, Inc. Date: 3-8-2012 Version: 8.951.0.0 VendorId: 1002 ProductId: 6798 Stepping: 0 No support for GPA InstrumentationGPA install directory: C:\Program Files\Intel\GPA\2012 R1\GPA version: 12.1.166792Current user is in Administrators group: YESCurrent GPA 2012 R1 (12.1.166792)
0 Kudos
Neal_Pierman
Valued Contributor I
757 Views
Hello,

Thanks for the reply -- I've forwarded this info to our Development Team.

Regards,

Neal
0 Kudos
Neal_Pierman
Valued Contributor I
757 Views
Hello,

The dev team hasn't been able to construct a testcase that duplicates your problem. If you are able to provide more info (such as access to your game's binaries under NDA), that would be helpful.

Regards,

Neal
0 Kudos
Reply