loadSound selective lockup

I’ve got a quirk here I’m having a difficult time hammering out.

I’ve got a control object with a sound object as a child. This global sound object has another sound object as a child:


Master = {};
Master.soundManager = new Sound();
Master.soundManager.BGM = new Sound();

In the main loop of my program, I have a function (VNELineReader()) with a switch looking for particular cues, one of which is loading a sound into BGM:


case "bgm_load" :
   Debug.trace('Loading music: Sound/'+args+'...');
   Master.soundManager.BGM.onLoad = function() {
      Debug.trace('...done loading music.');
      Master.scriptManager.haltScript = false;
      VNELineReader();
   }
   Master.scriptManager.haltScript = true;
   Master.soundManager.BGM.loadSound("Sound/"+args, false);
   break;

Now, when I run this in the Flash 8 IDE, no problems. The script waits for the sound to load, resumes, and later on plays BGM with a case “bgm_play”. However, if I compile the program and play it with the external flash player, the loadSound call causes the player to freeze, eat up about 600MB of memory in task manager, and then crash. It also does this if I open the .swf in Internet Explorer. However, it works fine in Firefox.

I’ve spent the whole day debugging with no luck, so I’m looking for some advice.

Thanks in advance.