Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On Thursday 15 of September 2011, Michael Stahl wrote:
On 14.09.2011 20:50, Tor Lillqvist wrote:
but currently LO doesn't seem to use it (couldn't find
-D_GLIBCXX_DEBUG); why is that?

We tried, but we ran into so many problems when code compiled with
that without that were mixed (accidentally/unintentionally) that we
gave up.

hmmm... guess mixing these could cause problems.

 Could and did. See 
http://lists.freedesktop.org/archives/libreoffice/2011-July/014970.html for 
the discussion that eventually lead to the removal of the STL debug support.

but the documentation says that the debug stuff is in a different
namespace, so trying to call a function in a linked library with a
parameter of the wrong debug-ness should fail to link?

 It should, at least the mangling really is different, but not all problems 
can be detected at link time. Suppose you have class A, which has std::list 
as a member, and you pass along only A*. In that case linker only sees A*, 
not std::list, so it cannot detect the mismatch. Similarly the compiler will 
not see any mismatch, only code compiled with and without debug support will 
use different layout of A, leading to memory corruptions.

 We would need a way to ensure that any C++ library we use is built with STL 
debug mode, or that it does not pass any STL objects across .so boundaries 
(and I intentionally say .so and not library, because e.g. inlines may end up 
in a different .so than the library they belong to).

for STLport this was apparently solved by using a distinct library for the
debug mode.

 Oh well, I think we've already agreed here that the libstdc++ debug mode 
implementation is ... not very good.

i don't think it's a good idea that the Linux developers introduce such
regressions

 Agreed, but Linux developers getting mysterious crashes is not a very good 
idea either, so it is a question if STL debug mode is worth it.

-- 
 Lubos Lunak
 l.lunak@suse.cz

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.