|
From: Nicholas N. <nj...@cs...> - 2005-08-05 15:58:38
|
Hi, In Valgrind 2.4.0, we built Valgrind as a position-independent executable (PIE) if the toolchain supported it. This turned out to cause quite a few problems -- people having random, inexplicable crashes. So for 3.0.0 we turned it off by default because it was causing too many problems. As a result of all this, it unfortunately seems like --enable-pie/--disable-pie has taken on a mythical status... as though we deliberately shipped a crippled Valgrind and you have to find the special configure option to get it to work, bwaha! So I'm trying to clear up the confusion. Here's a summary: - 3.0.0 does not use PIE by default. This is much more stable. Do not use --enable-pie unless you have to. - Any why would you have to? Because a PIE build can give your program more address space when running under Valgrind, particularly on AMD64. - However, as we have seen, using PIE is a bit flaky and has caused problems on many systems. In short: don't use --enable-pie when configuring Valgrind unless you know you need the extra address space it allows. And if you do use it, don't be shocked if Valgrind crashes. We'd like to fix these problems, but we don't understand them yet. Any information people can shed on them would be great, but as usual, saying "I built with PIE and Valgrind crashes!! What's wrong??" isn't very helpful. The more relevant information you can provide, the better. N |
|
From: Dirk M. <dm...@gm...> - 2005-08-05 16:15:47
|
On Friday 05 August 2005 17:58, Nicholas Nethercote wrote: > problems -- people having random, inexplicable crashes. So for 3.0.0 we > turned it off by default because it was causing too many problems. same for 2.4.1 that is. Dirk |
|
From: Julian S. <js...@ac...> - 2005-08-05 16:34:44
|
On Friday 05 August 2005 16:58, Nicholas Nethercote wrote: > So I'm trying to clear up the confusion. Here's a summary: > > - 3.0.0 does not use PIE by default. This is much more stable. Do not > use --enable-pie unless you have to. > > - Any why would you have to? Because a PIE build can give your program > more address space when running under Valgrind, particularly on AMD64. One more comment, which is: the fact that PIE gives you more address space on AMD64 is really because it works around limitations in Valgrind's low-level address space management. There is a plan to completely overhaul the address space manager, and if that works out, then you will be able to use arbitrary amounts of address space on 64-bit targets without having to resort to PIE builds. J |