On Tue, 2011-05-17 at 10:27 +0200, Svante Signell wrote: Further info. I think the problem is with gcc-4.6 mis-compiling. (Another issue is the memora acces problems in gdb: bothe present with gcc-4.4 and gcc-4.6).
Building exim-4.75-3 with gcc-4.6 -O2 results in a segfault: (even though the packages are successfully built: debian/minimaltest script is only present in 4.76-1) gdb build-tree/build-exim4-daemon-{light,heavy}/exim (gdb) run Starting program: exim4-4.75/build-tree/build-exim4-daemon-light/exim Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 [New Thread 7304.5] Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Cannot access memory at address 0x726f2030 Program received signal SIGSEGV, Segmentation fault. 0x0004d98a in rda_interpret (rdata=0xee6f5, options=865333, include_directory=0x0, sieve_vacation_directory=0x1018d4 "", sieve_enotify_mailto_owner=0x0, sieve_useraddress=0x1 <Address 0x1 out of bounds>, sieve_subaddress=0x0, ugid=0x0, generated=0x0, error=0xffffffff, eblockp=0x0, filtertype=0xffffffff, rname=0xfd344 "\001") at rda.c:554 554 BOOL had_disaster = FALSE; (gdb) dir src Source directories searched: /home/srs/DEBs/exim/exim4-4.75/src:$cdir: $cwd (gdb) list 545 int 546 rda_interpret(redirect_block *rdata, int options, uschar *include_directory, 547 uschar *sieve_vacation_directory, uschar *sieve_enotify_mailto_owner, 548 uschar *sieve_useraddress, uschar *sieve_subaddress, ugid_block *ugid, 549 address_item **generated, uschar **error, error_block **eblockp, 550 int *filtertype, uschar *rname) 551 { 552 int fd, rc, pfd[2]; 553 int yield, status; 554 BOOL had_disaster = FALSE; 555 pid_t pid; 556 uschar *data; 557 uschar *readerror = US""; 558 void (*oldsignal)(int); (gdb) thread apply all bt full Thread 5 (Thread 7304.5): #0 0x013fff4c in ?? () No symbol table info available. #1 0x01400749 in ?? () No symbol table info available. #2 0x01400e79 in ?? () No symbol table info available. #3 0x01400f4b in ?? () No symbol table info available. #4 0x0141194f in ?? () No symbol table info available. #5 0x01594c3c in ?? () No symbol table info available. #6 0x00000000 in ?? () No symbol table info available. Thread 4 (Thread 7304.4): #0 0x0004d98a in rda_interpret (rdata=0xee6f5, options=865333, include_directory=0x0, sieve_vacation_directory=0x1018d4 "", sieve_enotify_mailto_owner=0x0, sieve_useraddress=0x1 <Address 0x1 out of bounds>, sieve_subaddress=0x0, ugid=0x0, generated=0x0, error=0xffffffff, eblockp=0x0, filtertype=0xffffffff, rname=0xfd344 "\001") at rda.c:554 i = <value optimized out> reply_options = <value optimized out> recipient = 0x0 addr = <value optimized out> expandn = {0x0, 0x166f238 "+tls_peerdn", 0xfd820 "\317\206\r", 0x2a <Address 0x2a out of bounds>, 0xda0f4 "log", 0x0, 0x0, 0x0, 0x0, 0x1104041 "t/exim", 0x0 <repeats 12 times>} nextp = <value optimized out> fd = 23495736 rc = <value optimized out> pfd = {0, 0} yield = -1 status = <value optimized out> had_disaster = 0 pid = <value optimized out> data = <value optimized out> readerror = 0xca6f5 "\340\006\001D$$\001D$8\301\346\004)\362 \211T$ \203|$ \a\017\216c\004" oldsignal = 0x307ac <expand_string_internal+12924> #1 0xffffffff in ?? () No symbol table info available.