|
From: Julian S. <js...@ac...> - 2005-06-25 16:05:44
|
> > Do not print backtraces in assertion failures. This is an as-yet > > unsuccessful attempt to remove m_libcassert from the huge cycle which > > most of the modules currently live in. > > I understand why you want to break the cycles, but dropping the > backtraces from assertion failures sounds like quite a backward > step to me - are you expecting it to be a temporary measure or > something permanent? It is a backward step. The problem is that having backtraces in assertions drags in an extraordinary amount of stuff: all the debug info reading machinery, which depends on dynamic memory allocation (m_mallocfree). That means you can't legitimately use assertions in the low-level modules that are supposed to be able to operate without dynamic memory allocation (m_debuglog, m_libcbase, and importantly at some point m_aspacemgr), which is mad. An alternative is to reinstate them, but also add a new kind of lightweight no-backtrace assertion for use in aforementioned modules that should be towards the bottom of the graph. That's still a weak solution, though, since there are quite a lot of modules that m_debuginfo depends on, and all of them would have to use this lightweight assertion in order to avoid a circular dependence on m_debuginfo. J |