[M3devel] Popup Windows stalling regression tests on WinXP

Jay jayk123 at hotmail.com
Tue Apr 29 04:36:25 CEST 2008


I'd bet the correct options are already in use.
Otherwise functionality would be badly messed up.
At least for cm3.exe. MAYBE not the tests.
-gui and -windows show the same meaning below. You'd have to read the code.
This is an area that needs repair for NT386GNU and NT386MINGNU, but it should be ok for NT386.
What the compiler should know about these is how it marks the "system" in the resulting .exe.
(It is meaningless for .dlls.)
 
It's just one field in the .exe, via a switch to the linker.
Oh, and I guess there is mainCRTStartup vs. WinMainCRTStartup, which drags in different associated data, to inform the C runtime as to your type. However...I'm sure you can mix and match these. A GUI app can start with main, they just don't tend to. main and WinMain have different signatures, but mainCRTStartup and WinMainCRTStartup do not. They both take no parameters and get their data from GetCommandLine, GetStartupInfo, GetEnvironmentVariables, etc.
 
 > That errors should be just understood by the runtime
 
Maybe.
 
 > the system (Nt386) M3 runtime doesn't have the capacity to
 > avoid the segment violation, etc of the program before it gets killed by the OS?
 
It probably does.
It depends, but maybe.
Best just to avoid them if possible.
I realize there could be tests that want to deliberately dereference NULL to test the runtime handling.It might be viable to have runtime hooks for testing.
Maybe that are only supported in standalone() or something.
 
I'll have to look into it.
I have seen errors like this running the tests but I have ignored them before.
 
 - Jay


Date: Tue, 29 Apr 2008 04:26:43 +0200From: dabenavidesd at yahoo.esSubject: Re: [M3devel] Popup Windows stalling regression tests on WinXPTo: jayk123 at hotmail.com; wagner at elegosoft.comCC: m3devel at elegosoft.comHi all:What test(s) it fails? What happens if you append the options the compiler has for building on Win boxes:-console       produce a Windows CONSOLE subsystem program-gui           produce a Windows GUI subsystem program-windows       produce a Windows GUI subsystem programAbout the options above , does the last two: - gui and -windows have the same meaning? Should the NT386 cm3 compiler build with any of these options? What does the compiler know about this options?That errors should be just understood by the runtime (I think that's the beauty of the SAFE subset of the language), the system (Nt386) M3 runtime doesn't have the capacity to avoid the segment violation, etc of the program before it gets killed by the OS?ThanksJay <jayk123 at hotmail.com> escribió: 


truncated and newlines got removed, I wonder if email will ever work..


From: jayk123 at hotmail.comTo: wagner at elegosoft.comCC: m3devel at elegosoft.comSubject: RE: Popup Windows stalling regression tests on WinXPDate: Mon, 28 Apr 2008 21:47:35 +0000

Olaf, this is a bug and should be fixed.Like someone calling abort or assert(false) or NtRaiseHardError or dereferencing NULL or such.Or skip those tests on NT386 for now.And please provide an easy way to run specific tests.I'm working on adding some tests (ok, just one) and it seems to be a pain.I think it's just cm3 -FA ../../TESTARGS but it wasn't working.Install the debuggers: http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx    I install to c:\bin\x86 and c:\bin\amd64, though the default is c:\program files\blah.   mkdir c:\symbols  this is just for a local cache, not needed but nice   cd <somewhere>  c:\bin\x86\windbg -o -G -g -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols cm3  When there is a popup, type:  ~*k to get all the thread stacks, and see which one is in MessageBox or abort or whatnot.And send the stack? Or all of them if uncertain.You can also make a full or minidump with .dump for someone else to look at.Good to have the cm3.exe and cm3.pdb as well.Or I guess I can/should just fix them.I think I've seen a few of these myself. The stack might not be well displayed by the debugger.It could be this in the toplevel exception handler/watson thingy. Another thing to try is:c:\bin\x86\windbg -I to install windbg as the JIT debugger. That way, some crashes will bring up a debugger, possibly prompting first. I need to make a web page with a Win32 debugging primer at some point.Anyway, I'll try to bump this up in priority. Could be that SetErrorMode(something) quashes them, but that doesn't mean it isn't a bug.Another very good theory is that the "app type", console vs. gui, is relevant.Console apps upon abort() or assert(false) print something to stdout/stderr and then exit, whereas gui appsuse MessageBox. The type is determined from the .exe, and you can change it at runtime via a call. Not clear to me which of the various catastrophic errors this is though. I think abort(). - Jay

> Date: Mon, 28 Apr 2008 18:42:17 +0200> From: wagner at elegosoft.com> To: jayk123 at hotmail.com> CC: m3devel at elegosoft.com> Subject: Popup Windows stalling regression tests on WinXP> > Hi Jay,> > everytime I have a look why the regression tests haven't terminated> yet, I find another popup window with a message like this:> > cm3.exe has encountered a problem and needs to close.> We are sorry for the inconvenience.> > Any idea how to suppress this kind of error notification?> We'll never get reliable regression testing with popup windows :-/> > Olaf> -- > Olaf Wagner -- elego Software Solutions GmbH> Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany> phone: +49 30 23 45 86 96 mobile: +49 177 2345 869 fax: +49 30 23 45 86 95> http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194> 


Yahoo! Solidario.Intercambia los objetos que ya no necesitas y ayuda a mantener un entorno más ecológico.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20080429/665a6cf1/attachment-0002.html>


More information about the M3devel mailing list