X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-workers-bounces using -f Sender: salvador AT delorie DOT com Message-ID: <3C3314DF.FC34DB@inti.gov.ar> Date: Wed, 02 Jan 2002 11:10:39 -0300 From: salvador Organization: INTI X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19 i686) X-Accept-Language: es-AR, en, es MIME-Version: 1.0 To: djgpp-workers AT delorie DOT com CC: Charles Sandmann , Andris Pavenis , Robert Hvhne Subject: Re: NTVDM Error and TVision. References: <10112311737 DOT AA21576 AT clio DOT rice DOT edu> <001301c1929e$5f4e9c80$0102a8c0 AT acceleron> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Andrew Cottrell wrote: [snip] > I traced the problem to something to do with the destroy() code. I can > reproduce the NTVDM error every time I run the example below in a window > instead of full screen mode. I tried it 10 times in a row and more times > than I can count over the last two days in trying to find the real cause.. [snip] > int main() > { > #if 0 // Change to 1 and app will always crash in window mode > TMyApp myApp; > myApp.run(); > #else It looks like some problem related to destructors. I agree with Eli about the need of a trace, the code you show (destroy) doesn't really show anything. The shutDown methode and destructors should be studied. I think the most dangerous thing you'll find in a TV application is the deinitialization of low level stuff. When you destroy the application two important (and potentially problematic) things happends: 1) The EventQueue is deinitialized, it triggers a mouse deinitialization. Did you verified that my code that detects NT works under XP? See classes/thwmouse.cc look for Windows_NT. You should also try forcing the library to avoid hooking the mouse interrupt, it proved to be dangerous under NT. Try with use_mouse_handler=0 by hand. 2) The Screen is deinitialized, it makes some BIOS calls that we found dangerous because a lot of manufacturers fails to implement correctly. You should try disabling the Screen deinitialization. Try editing classes/tscreen.cc to do nothing in the ~TScreen destructor. Also try making suspend() do nothing. SET -- Salvador Eduardo Tropea (SET). (Electronics Engineer) Visit my home page: http://welcome.to/SetSoft or http://www.geocities.com/SiliconValley/Vista/6552/ Alternative e-mail: set AT computer DOT org set AT ieee DOT org Address: Curapaligue 2124, Caseros, 3 de Febrero Buenos Aires, (1678), ARGENTINA Phone: +(5411) 4759 0013