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);
}
===

Reply via email to