There are three primary ways to find bugs (1) Bugs reports from users. (2) Regression testing (4) Proof reading the code These ways has several problems. Bug reports from users (1a) How can we get the user to send in a bug report? (1b) How can we help the user detect that a bug exists? (1c) How can we help to the user to send in a good bug report? (1d) How can we know if this really is a Wine problem? (1e) What is the real cause of the problem? Regression testing (2a) How can we get developers to write regression tests? (2b) How can we get developers to run the regression tests? (2c) Why did the test fail? Proof reading the code (3a) How can we get developers to proof read the code? (3b) Why is the code reported as incorrect? The motivation points (1a,2a,2b,3a) can seem trivial but I think they are more important that most people realize. For example if we send most bugs reports to /dev/null, it will make users less likely to send in bug reports. As for myself I have as most of you know been working on and maintaining a static code analysis tool (3a) called winapi_check, soon to be followed by a regression tester (2a) called winapi_test. Anyway, lets concentrate on (1), eventhough I personally thinks that that approach has large limitations because it will, as Wine get better and better, be harder and harder to find problems that way, since it will be for each version be less and less certain that the a detected problem really is a Wine problem and not a problem with the application. This is especially true if you try to find bugs by assuming that application will not for example call API:s with NULL values under normal circumstanses. Currently we have a simple debug message reporting that basicly assumes that a problem can be detected by a simple test of some local state. Since this isn't true in general and by now most problem that can have already been fixed. So what what we must do is doing something radically different. The question is what exactly what? This is a good question that I don't really have a good answer to. But lets do some brainstorming, meaning that not all suggestions are serious. * We could introduce some ASSERT like macros that as default does WARN, but could be runtime configured to do something else. * We could introduce some kind of magic null handles that if passed to a normal API will trigger an error or something. * We could keep some sort of internal log of functions that failed and if a related function later also fails it can display a more intelligent error message. * We could write some sort of Wine for Windows that in principle only implements the debug messages so we more easy could compare Wine and Windows. Any more suggestions?