On 2011/04/23 23:47, Dale Rahn wrote:
> Here is a diff that was originally hatched at c2k10 and finally implemented
> at k2k11. This has been tested lightly so needs to be tested on all systems
> with big and small programs.
This breaks 'doveadm' in the dovecot package; to test,
pkg_add dovecot, then just run 'doveadm', no need for any setup.
===
(gdb) r
Starting program: /usr/local/bin/doveadm
(no debugging symbols found)
Program received signal SIGTRAP, Trace/breakpoint trap.
Cannot remove breakpoints because program is no longer writable.
It might be running in another process.
Further execution is probably impossible.
0x0000000202302470 in ?? ()
===
This is happening when it dlopen'()s a module. The following
code is equivalent to what doveadm is doing, and is enough
to show the problem.
Reverting to ld.so from before 2011/05/22 and things work ok.
===
#include <dlfcn.h>
main() {
dlopen("/usr/local/lib/dovecot/doveadm/lib10_doveadm_zlib_plugin.so",
RTLD_GLOBAL | RTLD_NOW);
}
===