The Blog

IE6 + scriptaculous + QuickFind BHO = pure virtual function call error = IE crash

If you are using script.aculo.us scripts to do some fancy web-apping, read this post.

I’ve implemented this library of scripts in one CMS app I built. On one hand you have a list of available files and you need to choose some and sort them out into groups. 100% perfect situation for draggable / droppable / sortable combo that scriptaculous implements.

However, at three different computers, IE 6 (XP SP1, fully patched) would crash as soon as the page opening starts. It crashes in iexplore.exe and kernel32.dll, giving away this lovely file as output (small sample given below).

<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="IEXPLORE.EXE" FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="HMMAPI.DLL" SIZE="36352" CHECKSUM="0x8DE5BA15"
	 BIN_FILE_VERSION="6.0.2800.1106" BIN_PRODUCT_VERSION="6.0.2800.1106"
	 PRODUCT_VERSION="6.00.2800.1106"
	 FILE_DESCRIPTION="Microsoft HTTP Mail Simple MAPI"
...

No matter what I tried to find the cause, it would crash. Sometimes it would show the page content, but then crash before finishes loading. Totally confusing, as I could not repeat this on any other computer I tried.

Thus, the last resort. I went to the crime scene last night to try to debug the damn thing. I spent just over 5h trying to figure this out until it ended on the most unexpected culprit of all.

One of the comps had Visual Studio installed and this turned out to be great help. Without it, I had no idea where to start looking but to disable one function at a time and see what happens.

Debugging the crush revealed that error thrown is R6025 pure virtual function call. As you can see, this returns 1000s of pages, which was not good sign at all, but at least was a start.

Sifting through all those pages, I tried many things. On one page someone said that if you have rel. positioned elements inside of scrolling div, IE would throw this error. I had exactly such situation, removed all such statements but it still happened. Then I encountered the page that sank my hopes even lower. IE’s engine seems to be broken more severely then I imagined. This was after 3h of searching, testing, trying.

In the meantime, purely by accident, we realized that IE crashes once the mouse has been moved. If I load the page but do not touch the mouse, page would load properly, no problems. As soon as the mouse was moved, IE goes crumbling down. Even more confusing.

Eventually, we found another computer that has the same WinXP/IE installation and tried there. Jaws were dropped when pages worked perfectly on that computer. I mean perfectly. This clearly meant that it isn’t IE alone, but in combination with something else. But to compare two PCs with dozens of apps was crazy. It would mean removing one app at the time and trying to figure out which one is the problem. Add to the fact that in Windows, uninstallation would not always remove all of app’s components or registry settings and this is not really an option to try.

More searching lead me to this Usenet post where one of Microsoft’s MVPs explained three things that lead IE to crash, and that one of them can be any of BHOs installed. BHO stands for Browser Helper Object – things like Google toolbar. The man recommends:

  1. open Tools / Internet Options, Advanced tab
  2. uncheck “enable third party browser extensions” – this will turn off all BHOs

After turning this off, everything worked perfectly. THe only thing was to figure out what was causing the crash. Enter BHO Deamon – nice little utility that lists out all the BHOs installed and allows you to disable some. There was just one BHO installed – it was Text Ware’s QuickFind. I tried looking for an update but it seems that this company is dead as their site is empty.

What I found is that it comes bundled with Cambridge Advanced Learner’s Dictionary on CD-ROM. What QuickFind does is that it detects mouse movements anywhere on the screen and detects displayed word in any active application and then gives you dictionary entry for it. Sounds quite handy, really, if it wasn’t for the fact that it caused IE to crash. And it was exactly in line with the previous discovery that IE crashes when mouse is moved. All pieces fitted together.

After disabling it, things were back in order and at 2am I got home.

Once again, if you have IE crashing consistently on particular web page – uncheck browser extensions support. It’s 99% chance that it will resolve the problem. You just need to figure out which BHO is giving you headache.

Banca

Banca

Beautiful and functional currency converter, supports just about any currency in the world.

Go Couch to 5k

Go Couch to 5k

The most popular starter running program in beautiful feature-rich app (GPS tracking, charts, detailed history etc)

Quickie to do

Quickie to do

The fastest short-term task-list / check-list app on the App Store. Really.

Guerrilla Cardio

Guerrilla Cardio

The most challenging high-impulse interval training in the world.

Run Mate

Run Mate

A versatile running coach app, with unlimited number of running programs. Perfect for casual runners.

21 Comments

Feel free to chime in, looking forward to it. Leave a Comment

  1. Andre says:

    This bloody error drove me mad in the last days.
    Thank you very much mate, i owe you (and Google :) one!

  2. Efi Golan says:

    Thumbs up — You are right and the problem is fixed :)

    Cause of you I only spent 2H on it (almost gave up) :)

    Thank you,
    Efi

  3. Adeh says:

    This is a great explanation of the problem, but there is still no solution! Unless you are writing code that you will only use for yourself, turning off BHOs is not an option. I for one didn;t even realize there was a problem until I got to the client site and of course they are using IE.

    Anyway, does anyone have a solution? Is scriptaculous useless?

  4. Aleksandar says:

    There is no solution to this maze of inter-connecting problems. Scriptaculous is more than useful and all you can do is to provide the help for users having problems.

  5. Adeh says:

    Hmm. Thanks for the response. I used scriptaculous before, but for this case I can just leave it out. Thank goodness prototype.js is working.

    Cheers!

  6. Andrey says:

    same bug (pure virtual function call) in ie (but hard to reproduce) — if on page use Many htc ie controls and for init each htc control use . some controls became hidden, and if mouseover them — get “pure virtual function call” error. to fix it i use , function Init() { if (element.readyState!=“complete”) return; … }. hope this will be useful for somebody…

  7. Andrey says:

    sorry.. there no protection fom html in post :)

  8. tomek says:

    1 year past your post I started getting the same error.

    Thank you for the solution. I found out that it is prototype.js that make ie crach. Even after installing ie7 the error was still there driving me mad. I even used to view pages using prototype with firefox.
    Thank you for the solution

  9. hiral says:

    thnx so much mate…u helped me out…the error was re’lly annoyin..but cheers to u now its resolved!!!

  10. Robb says:

    This two step fix was the trick on the error: Runtime Error! … R6025 — pure virtual function call. I was not using anything scriptaculous related at all, but rather some PHP & Javascript of my own and encountered this error. I haven’t seen IE crash that hard in years, although, admittedly I don’t use it much except for browser compatibility development and testing. Robb

  11. marianne says:

    finally found a solution to my problem with the ie: I have used the cambridge dict as well and that’s the culprit in my case. thanx so much for your valuable input!

  12. marianne says:

    fantastic — you helped solve my prob — it was indeed the BHO of the cambridge dict.
    thanx so much — marianne

  13. masith says:

    thx very much mate.…. u have solved the problem. fantastic solution.
    thx again

  14. Vadim says:

    Great investigation! Great solution!
    Thanks!
    I unchecked “enable third party browser extensions”. IE works now!
    I had headache when IE (last version) did’t work on some website, BUT another browser (Firefox) did.

    Note. I have “Collins COBUILD Advanced Learner’s English Dictionary” installed on my computer. I’m not sure that problem is in this soft.

    Thanks again and again.

  15. Clausia says:

    I found the same error 2 years after :S
    In my case I have that problem with IE7 and I thought that version of IE was the problem, but last night I turned off all components in my browser and scriptaculous pages work fine, now I know is BHO componets who causes teh problem.
    :O

  16. GUILLAUMOND says:

    Thanks for the explanation.

    Crashes also IE7 with XP SP2.

    François

  17. Glenn says:

    As someone stated here (I think), disabling HBOs entirely isn’t a solution for those of us who work with developing websites. We can’t just tell our clients clients to disable the HBOs in their browsers, many use i.e. the google toolbar.

    What is Microsofts take on this, they totally ignore it? They must be since nothing happend for a very long time.
    Is there ANY statistics of how many that got this dll installed?

    This is VERY sad, since it makes it impossible for me to use the one library I really love. YUI is to big and overly complex. jQuery is good, but buggy, and doesn’t feel robust.

  18. Jose Antonio says:

    Yes I have had this problem for years and I have just find out the problem this morning. Yes you are right the problem is the quickfind complemente of Cambridge Klett Dictionary. Now in the Internet Explorer 7 you have a option in “Tools”-> “complements administration” where you can disable the BHO you want. And in this way I find out the problem.
    I don’t know if this problem will have been solved in the new verions of Cambridge Dictionary.

  19. Leon says:

    You’re right. I disable the add-on “QuickFind BHO Object” which comes with Oxford Advanced Genie and the problem is gone.
    Thank you

Trackbacks for this post

  1. BulkDump
  2. 8 Characters » Pure Virtual Function Calls and IE6

Leave a Comment

Add your comment here, just please be civilized and stay on topic.