id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc 19,Move to GCC,dmik,,"It makes sense to build the whole Odin with the latest GCC 4.x. Among other things such as the overall better quality of the compiler comparing to the ancient VAC3 and the fact that GCC's kLIBC is already widely used in the system (including Odin itself), this has another important advantage: VAC3 runtime (which Odin CRT DLL is currently comprised of) has a limitation that it requires using DosExitList() in a DLL that uses C++ classes and wants destructors of static/global objects to be properly called at program termination which is very inconvenient and kind of dangerous -- a failure in a DosExitList routine may turn process into a zombie. This is especially a problem when Odin CRT DLL is mixed with some other C runtime DLL like kLIBC. kLIBC does all static destruction at DLL termination time but this happens after processing exit list routines and may easily create a situation when a C++ kLIBC class makes a call to Odin (e.g. some Win32 API) which ends up in a C++ Odin class but since Odin CRT is already uninitialized, the application will most likely crash. BTW, such DosExitList() usage in Odin and in VAC runtime may be also a reason for the infamous hang in DosExitList at program termination on SMP machines. Or somehow related to that hang. I don't have any proof so far, just a feeling.",task,closed,major,compiler switch,odin,,highest,fixed,,psmedley