views:

1060

answers:

5

My site works fine in Firefox, but it crashes in IE.

I am using alot of jQuery in order to fade in content. When the user clicks on one of the above links a few times, it will crash in IE.

Here is my site: Idea Palette

I have absolutely no idea why the site crashes in IE. I don't even know where to begin to debug my problem. I don't have Visual Studio on my computer, but on my friends computer Visual Studio reads a message of "An unhandled win32 exception occurred in iexplore.exe[####]"

Does anyone have any ideas?

+1  A: 

What version IE? What system xp,vista,what? What antivirus is installed? What add-ins are loaded? Javascript and/or html doesnt normally cause these kinds of crashes.

for what its worth, its works fine on ie8 + vista.

-Oisin

x0n
I am using IE7. I have had the same problem on Multiple computers, so I know it has nothing to do with the Operating System or other external programs.
zeckdude
Ouch. The fact that someone else could get a stacktrace means it's a browser bug - you cannot fix it, but you could avoid it. I see you isolated the jscrpipt that breaks it. Oh well.
x0n
+9  A: 

Here you go. It has something to do with your DirectX filter (probably what's doing the fades). Here's the stack, and EAX is NULL. Whatever the code is doing is trying to deref EAX:

CDXTFilterBehavior::_ClearSurface:
6C8E87E1  mov         edi,edi 
6C8E87E3  push        ebp  
6C8E87E4  mov         ebp,esp 
6C8E87E6  push        ecx  
6C8E87E7  mov         eax,dword ptr [ebp+0Ch] 
6C8E87EA  mov         ecx,dword ptr [eax] <--- EAX is NULL

>   dxtrans.dll!CDXTFilterBehavior::_ClearSurface()  
    dxtrans.dll!CDXTFilterBehavior::_DrawUnfilteredElementLayers()  
    dxtrans.dll!CDXTFilterBehavior::_DrawElementWithProceduralSurfaces()  
    dxtrans.dll!CDXTFilterBehavior::_ExecuteFilterChain()  
    dxtrans.dll!CDXTFilterBehavior::Draw()  
    mshtml.dll!CPeerHolder::Draw()  
    mshtml.dll!CLayout::DrawClientLayers()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispContainer::DrawChildren()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispContainer::DrawChildren()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispContainer::DrawChildren()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispContainer::DrawChildren()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispContainer::DrawChildren()  
    mshtml.dll!CDispContainer::DrawSelf()  
    mshtml.dll!CDispNode::Draw()  
    mshtml.dll!CDispRoot::DrawEntire()  
    mshtml.dll!CDispRoot::DrawRoot()  
    mshtml.dll!CView::RenderView()  
    mshtml.dll!CDoc::OnPaint()  
    mshtml.dll!CServer::OnWindowMessage()  
    mshtml.dll!CDoc::OnWindowMessage()  
    mshtml.dll!CServer::WndProc()  
    user32.dll!_InternalCallWinProc@20()  
    user32.dll!_UserCallWinProcCheckWow@32()  
    user32.dll!_CallWindowProcAorW@24()  
    user32.dll!_CallWindowProcW@20()  
    user32.dll!_InternalCallWinProc@20()  
    user32.dll!_UserCallWinProcCheckWow@32()  
    user32.dll!_DispatchClientMessage@20()  
    user32.dll!___fnDWORD@4()  
    ntdll.dll!_KiUserCallbackDispatcher@12()  
    user32.dll!_NtUserDispatchMessage@4()  
    user32.dll!_DispatchMessageWorker@8()  
    user32.dll!_DispatchMessageW@4()  
    ieframe.dll!CTabWindow::_TabWindowThreadProc()  
    kernel32.dll!@BaseThreadInitThunk@12()  
    ntdll.dll!___RtlUserThreadStart@8()  
    ntdll.dll!__RtlUserThreadStart@8()

Perhaps you're removing an element from the DOM while the transform is still operating on it?

jeffamaphone
Where did you get the above code? How can I go about fixing the EAX? I have no idea what an EAX is, btw.
zeckdude
I ran iexplore.exe with Visual Studio attached and loaded public symbols. EAX is a CPU register. You can't fix it directly... you have to figure out how to work around it. The fact that it's null is your only clue--whatever object you thought you were acting on is not there.
jeffamaphone
Divide and Conquer suggested below is a good approach.
jeffamaphone
I used the Divide and Conquer approach, and as soon as I commented out the first section of javascript that controls the slideshow, it started working fine. Therefore, the fading of the pages in combination with the fading of the slideshow makes Internet Explorer crash. I have no idea why though.
zeckdude
+6  A: 

I can suggest that you have to follow the "Divide and Conquer Strategy".

Remove all your javascript, and try to load it, if it fail the problem is with the code you have removed. Now add again "half" of the code that you have removed, if it didn't crash then the problems isn't in this half, if it crashes again then it is in the half you have added. Now you have to keep adding "half" of the remaining code when it works, or removing half of the code you have added if it fails. If you keep doing this eventually you will led to a piece of code that you can't divide and if added make IE crash.

This will not solve your bug but it may give you an idea where the real problem is.

Ismael
A: 

Going on from what @jeffamaphone was saying, if it is something to do with modifying the DOM then it might be worth moving your JavaScript from the <head> to just before the closing </body> tag.

I have had issues with IE before and the infamous Operation Aborted error and doing this helped fix that, but I appreciate that YMMV.

Ian Oxley
A: 

This is an XP specific issue. We have a full team of developers looking into the issue so you will not see the same issue in Vista.

Matthew Bonner
Who is we? Do you work for Microsoft?
zeckdude