Reported by briang1 on 2010-12-06 19:23
This seems to have ocurred somwhere between snap 954 and 970.
How to produce the sound.
All you need to do is run some software, like IE or Outlook Express for a while, normally about 10 minutes on my machines, then do an nvda restart or quit in any way and you will hear it after the falling tones. Many people who have heard this on the freelist list suggest its the error sound truncated and played multiple times, lasting around 2 or so seconds. There are no obvious signs of an error in the log file. However a mp3 of it is added if the ticket system will allow me to.
I know you prefer problems to be in seperate tickets, but I feel that alied to this strange effect is a tendency to crash applications like IE Outlook expres amd Skype. Hard to quantify of course but might be worth bearing in mind.
Attachment raspberry in nvda.mp3 added by briang1 on 2010-12-06 20:50
Comment 1 by jteh on 2010-12-06 21:58
This is definitely the error sound. Unfortunately, I haven't been able to work out what is causing it either. As you say, there is no useful log output.
Technical: I suspect there is a problem in a destructor somewhere, but I can't work out where and how it got introduced recently.
Milestone changed from None to 2011.1
Comment 2 by jteh on 2010-12-07 04:01
Regression caused by 10d7d8a (introduction of global plugins). I have no idea how the global plugins code is causing this. It only seems to happen if you've been using MSHTML controls.
Comment 3 by jteh on 2010-12-07 04:54
Actually, this isn't specific to MSHTML controls at all.
Technical: It looks like !AppModules for closed applications now take a lot longer to be garbage collected than they did previously. From what I can tell, this seems to be due to the new event chaining code; the frame objects for eventHandler.EventExecuter.gen() don't seem to be cleaned up straight away. Anyway, if they don't get garbage collected before NVDA exits, they try to call NVDAHelper.localLib.destroyConnection(), but NVDAHelper has already been terminated at that point, so it fails. I assume part of the logging framework has already been garbage collected as well, hence the weird logging behaviour.
Anyway, I think we need an AppModule.terminate() function and code to cleanup app modules on exit, similar to what we do for tree interceptors and global plugins.
Comment 4 by jteh on 2010-12-07 06:29
Fixed in b6d7259.