Re: postfix/local segfaults

2010-07-22 Thread Bas Mevissen
On 07/22/2010 05:22 AM, Victor Duchovni wrote:
 On Wed, Jul 21, 2010 at 11:16:04PM +0200, Bas Mevissen wrote:

   
 Can you try what happens if you replace at

 typedef struct LOCAL_STATE {
 int level;/* nesting level, for logging */
 DELIVER_ATTR msg_attr;/* message/recipient attributes */
 DELIVER_REQUEST *request; /* as from queue manager */
 } LOCAL_STATE;


 the first line with:

 typedef struct local_state {

 in virtual.h and same for DELIVER_ATTR and DELIVER_REQUEST?

 The difference is that the symbol LOCAL_STATE is now only used once.
 Most coding standards forbid to define a symbol more than once.
 
 The local(8) and virtual(8) servers are separately compiled
 programs (the latter being a stripped down version of the former).
 The header files in question are not used in the same compilation
 unit, and so this suggestion is not productive.

   
Ah, even more fun. Using a different typedef with the same name all over
the source tree.
I would never recommend someone to have a global symbol redefined in the
same source tree. Even if it are different applications as in this case.

Anyway, my remarks is still valid if you change file local.h instead of
virtual.h.

-- 
Bas



Re: postfix/local segfaults

2010-07-22 Thread Kai Krakow
Bas,

why should that make a difference if it was already proven that
changing the optimization level of the compiler fixes the issue, and
that it is probably a special corner case of hardened gcc3.4? I
suppose it has to do with it's stack protecting techniques etc.

2010/7/22 Bas Mevissen ab...@basmevissen.nl:
 On 07/22/2010 05:22 AM, Victor Duchovni wrote:
 On Wed, Jul 21, 2010 at 11:16:04PM +0200, Bas Mevissen wrote:


 Can you try what happens if you replace at

 typedef struct LOCAL_STATE {
     int level;                /* nesting level, for logging */
     DELIVER_ATTR msg_attr;    /* message/recipient attributes */
     DELIVER_REQUEST *request; /* as from queue manager */
 } LOCAL_STATE;


 the first line with:

 typedef struct local_state {

 in virtual.h and same for DELIVER_ATTR and DELIVER_REQUEST?

 The difference is that the symbol LOCAL_STATE is now only used once.
 Most coding standards forbid to define a symbol more than once.

 The local(8) and virtual(8) servers are separately compiled
 programs (the latter being a stripped down version of the former).
 The header files in question are not used in the same compilation
 unit, and so this suggestion is not productive.


 Ah, even more fun. Using a different typedef with the same name all over
 the source tree.
 I would never recommend someone to have a global symbol redefined in the
 same source tree. Even if it are different applications as in this case.

 Anyway, my remarks is still valid if you change file local.h instead of
 virtual.h.

-- 
Regards,
Kai Krakow
http://hurikhan77.wordpress.com/


Re: postfix/local segfaults

2010-07-22 Thread Wietse Venema
Kai Krakow:
 Bas,
 
 why should that make a difference if it was already proven that
 changing the optimization level of the compiler fixes the issue, and
 that it is probably a special corner case of hardened gcc3.4? I
 suppose it has to do with it's stack protecting techniques etc.

That is possible.

Postfix passes a structure by value as a function argument, meaning
that it will take up a larger than usual amount of stack space.

This may violate assumptions about stack usage that are made by
some stack protection mechanisms.

The pass-by-value structure is part of a Postfix safety mechanism,
and therefore I am not inclined to change it to work around buggy
compiler features.

Wietse


Re: postfix/local segfaults

2010-07-22 Thread Victor Duchovni
On Thu, Jul 22, 2010 at 08:21:48AM +0200, Bas Mevissen wrote:

  The local(8) and virtual(8) servers are separately compiled
  programs (the latter being a stripped down version of the former).
  The header files in question are not used in the same compilation
  unit, and so this suggestion is not productive.
 

 Ah, even more fun. Using a different typedef with the same name all over
 the source tree.
 I would never recommend someone to have a global symbol redefined in the
 same source tree. Even if it are different applications as in this case.
 
 Anyway, my remarks is still valid if you change file local.h instead of
 virtual.h.

I will refrain from responding in detail, there is nothing substantive
here, the real issue is discussed in the other comments in this thread.
Over and out.

-- 
Viktor.


Re: postfix/local segfaults

2010-07-22 Thread Kai Krakow
2010/7/22 Wietse Venema wie...@porcupine.org:
 The pass-by-value structure is part of a Postfix safety mechanism,
 and therefore I am not inclined to change it to work around buggy
 compiler features.

Wise decision... Stick with that. :-)

-- 
Regards,
Kai Krakow
http://hurikhan77.wordpress.com/


Re: postfix/local segfaults

2010-07-21 Thread Kai Krakow
Mystery solved:

Adding -O2 to CFLAGS (an -Ox parameter was missing) solved the problem.
Seems to be an GCC issue. I don't know if postfix should compile and work fine
without this or with another optimizer level.

If someone wants to debug this further: The pointer to the problem is within
src/local/recipient.c:319 when the state struct is passed to
deliver_switch(): Just before the call the struct members are set correct, then
on entering the function, the members are reset to the original values on the
stack when deliver_recipient() (the calling function) was entered (and thus
state.msg_attr.local is reset to 0x0).

2010/7/14 Kai Krakow hurikhan77+post...@googlemail.com:
 Hello!

 I've just upgraded a working setup from postfix 2.5.5 to 2.6.6 on a
 Gentoo box. Since then, when postfix/local tries to do user name
 expansion (as far as I learned from the backtrace), it segfaults:

 8--
 #0  0x11286469 in vstring_strcpy (vp=0x112b8c50, src=0x0) at vstring.c:409
 #1  0x112736d9 in dict_db_lookup (dict=0x112b8bd0, name=0x0) at dict_db.c:200
 #2  0x1124a83e in deliver_alias (state=
      {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
 0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
 218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
 0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
 0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
 a...@a.a.aa, address = 0x112bec28
 a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
 0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
 unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
 local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
 = 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
 agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
 conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
 request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
 loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
 = 0, home = 0x0, logname = 0x0, shell = 0x0}, name=0x0,
 statusp=0x5cea4c48) at alias.c:199
 #3  0x11250df9 in deliver_switch (state=
      {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
 0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
 218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
 0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
 0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
 a...@a.a.aa, address = 0x112bec28
 a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
 0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
 unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
 local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
 = 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
 agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
 conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
 request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
 loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
 = 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:135
 #4  0x11251af8 in deliver_recipient (state=
      {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
 0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
 218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
 0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
 0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
 a...@a.a.aa, address = 0x112bec28
 a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
 0x0}}, domain = 0x112c0a7d A.A.AA, local = 0x112c0a78
 root, user = 0x112c0aa0 root, extension = 0x0, unmatched = 0x0,
 owner = 0x0, delivered = 0x112bec28 r...@weser.netactive.de, relay =
 0x5cea5943 local, msg_stats = {incoming_arrival = {tv_sec =
 1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279125222,
 tv_usec = 792273}, agent_handoff = {tv_sec = 1279125222, tv_usec =
 906187}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done =
 {tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from =
 0x0, request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
 loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
 = 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:319
 #5  0x1124f246 in local_deliver (rqst=0x112be1a8, service=0x5cea5943
 local) at local.c:718
 #6  0x1124f3c5 in local_service (stream=0x112bd0c8, service=0x5cea5943
 local, argv=0x5cea5880) at local.c:756
 #7  0x11254c53 in single_server_wakeup (fd=14) at single_server.c:262
 #8  0x11254e1d in single_server_accept_local (unused_event=1,
 context=0x6 Address 0x6 out 

Re: postfix/local segfaults

2010-07-21 Thread Wietse Venema
Kai Krakow:
 Mystery solved:
 
 Adding -O2 to CFLAGS (an -Ox parameter was missing) solved the problem.
 Seems to be an GCC issue. I don't know if postfix should compile and work fine
 without this or with another optimizer level.

It *should* work with all optimization levels. except for:

- Bugs in the compiler, where the optimizer breaks valid code.

- Bugs in Postfix, where I rely on behavior that is not promised
  by the C standard.

It can require a great deal of time to figure out which the
problem is. Fortunately it looks like you have done most of it.

 If someone wants to debug this further: The pointer to the problem is within
 src/local/recipient.c:319 when the state struct is passed to
 deliver_switch(): Just before the call the struct members are set correct, 
 then
 on entering the function, the members are reset to the original values on the
 stack when deliver_recipient() (the calling function) was entered (and thus
 state.msg_attr.local is reset to 0x0).

That would be a compiler bug, possibly compiler version dependent. 

C has supported structure valued function parameters for about 30
years. Although implementations of this feature have changed, it
should never break when calling a function in the same program that
is compiled with the same compiler options (and the Postfix build
system recompiles all code when you change compiler options with
make makefiles).

Wietse

 2010/7/14 Kai Krakow hurikhan77+post...@googlemail.com:
  Hello!
 
  I've just upgraded a working setup from postfix 2.5.5 to 2.6.6 on a
  Gentoo box. Since then, when postfix/local tries to do user name
  expansion (as far as I learned from the backtrace), it segfaults:
 
  8--
  #0 ?0x11286469 in vstring_strcpy (vp=0x112b8c50, src=0x0) at vstring.c:409
  #1 ?0x112736d9 in dict_db_lookup (dict=0x112b8bd0, name=0x0) at 
  dict_db.c:200
  #2 ?0x1124a83e in deliver_alias (state=
  ? ? ?{level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
  0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
  218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
  0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
  0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
  a...@a.a.aa, address = 0x112bec28
  a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
  0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
  unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
  local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
  = 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
  agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
  conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
  0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
  request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
  loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
  = 0, home = 0x0, logname = 0x0, shell = 0x0}, name=0x0,
  statusp=0x5cea4c48) at alias.c:199
  #3 ?0x11250df9 in deliver_switch (state=
  ? ? ?{level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
  0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
  218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
  0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
  0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
  a...@a.a.aa, address = 0x112bec28
  a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
  0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
  unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
  local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
  = 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
  agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
  conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
  0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
  request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
  loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
  = 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:135
  #4 ?0x11251af8 in deliver_recipient (state=
  ? ? ?{level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
  0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
  218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
  0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
  0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
  a...@a.a.aa, address = 0x112bec28
  a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
  0x0}}, domain = 0x112c0a7d A.A.AA, local = 0x112c0a78
  root, user = 0x112c0aa0 root, extension = 0x0, unmatched = 0x0,
  owner = 0x0, delivered = 0x112bec28 r...@weser.netactive.de, relay =
  0x5cea5943 local, msg_stats = {incoming_arrival = {tv_sec =
 

Re: postfix/local segfaults

2010-07-21 Thread Kai Krakow
2010/7/21 Wietse Venema wie...@porcupine.org:
 That would be a compiler bug, possibly compiler version dependent.

Yep, I'm sure it is. The postfix ebuild from gentoo contains some
evidence that hardened gcc 3.4 may be problematic. In case you are
interested, follow up bug report:
http://bugs.gentoo.org/show_bug.cgi?id=328375

-- 
Regards,
Kai Krakow
http://hurikhan77.wordpress.com/


Re: postfix/local segfaults

2010-07-21 Thread Bas Mevissen
On 07/21/2010 10:23 PM, Kai Krakow wrote:
 2010/7/21 Wietse Venema wie...@porcupine.org:
 That would be a compiler bug, possibly compiler version dependent.
 
 Yep, I'm sure it is. The postfix ebuild from gentoo contains some
 evidence that hardened gcc 3.4 may be problematic. In case you are
 interested, follow up bug report:
 http://bugs.gentoo.org/show_bug.cgi?id=328375
 


Can you try what happens if you replace at


typedef struct LOCAL_STATE {
int level;/* nesting level, for logging */
DELIVER_ATTR msg_attr;/* message/recipient attributes */
DELIVER_REQUEST *request; /* as from queue manager */
} LOCAL_STATE;


the first line with:

typedef struct local_state {

in virtual.h and same for DELIVER_ATTR and DELIVER_REQUEST?

The difference is that the symbol LOCAL_STATE is now only used once.
Most coding standards forbid to define a symbol more than once.

Bas.

-- 
Bas


Re: postfix/local segfaults

2010-07-21 Thread Steve

 Original-Nachricht 
 Datum: Wed, 21 Jul 2010 22:23:06 +0200
 Von: Kai Krakow hurikhan77+post...@googlemail.com
 An: Postfix users postfix-users@postfix.org
 Betreff: Re: postfix/local segfaults

 2010/7/21 Wietse Venema wie...@porcupine.org:
  That would be a compiler bug, possibly compiler version dependent.
 
 Yep, I'm sure it is. The postfix ebuild from gentoo contains some
 evidence that hardened gcc 3.4 may be problematic. In case you are
 interested, follow up bug report:
 http://bugs.gentoo.org/show_bug.cgi?id=328375
 
Ohh boy. That is stuff I wrote 5 years ago.


 -- 
 Regards,
 Kai Krakow
 http://hurikhan77.wordpress.com/

-- 
Neu: GMX De-Mail - Einfach wie E-Mail, sicher wie ein Brief!  
Jetzt De-Mail-Adresse reservieren: http://portal.gmx.net/de/go/demail


Re: postfix/local segfaults

2010-07-21 Thread Victor Duchovni
On Wed, Jul 21, 2010 at 11:16:04PM +0200, Bas Mevissen wrote:

 Can you try what happens if you replace at
 
 typedef struct LOCAL_STATE {
 int level;/* nesting level, for logging */
 DELIVER_ATTR msg_attr;/* message/recipient attributes */
 DELIVER_REQUEST *request; /* as from queue manager */
 } LOCAL_STATE;
 
 
 the first line with:
 
 typedef struct local_state {
 
 in virtual.h and same for DELIVER_ATTR and DELIVER_REQUEST?
 
 The difference is that the symbol LOCAL_STATE is now only used once.
 Most coding standards forbid to define a symbol more than once.

The local(8) and virtual(8) servers are separately compiled
programs (the latter being a stripped down version of the former).
The header files in question are not used in the same compilation
unit, and so this suggestion is not productive.

-- 
Viktor.


postfix/local segfaults

2010-07-14 Thread Kai Krakow
Hello!

I've just upgraded a working setup from postfix 2.5.5 to 2.6.6 on a
Gentoo box. Since then, when postfix/local tries to do user name
expansion (as far as I learned from the backtrace), it segfaults:

8--
#0  0x11286469 in vstring_strcpy (vp=0x112b8c50, src=0x0) at vstring.c:409
#1  0x112736d9 in dict_db_lookup (dict=0x112b8bd0, name=0x0) at dict_db.c:200
#2  0x1124a83e in deliver_alias (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
a...@a.a.aa, address = 0x112bec28
a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
= 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}, name=0x0,
statusp=0x5cea4c48) at alias.c:199
#3  0x11250df9 in deliver_switch (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
a...@a.a.aa, address = 0x112bec28
a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
local, msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
= 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:135
#4  0x11251af8 in deliver_recipient (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 active, queue_id = 0x112be868 0658546584CA, offset =
218, encoding = 0x11298018 , sender = 0x11298018 , dsn_envid =
0x11298018 , dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 , dsn_notify = 0, orig_addr = 0x112bec00
a...@a.a.aa, address = 0x112bec28
a...@a.a.aa, u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x112c0a7d A.A.AA, local = 0x112c0a78
root, user = 0x112c0aa0 root, extension = 0x0, unmatched = 0x0,
owner = 0x0, delivered = 0x112bec28 r...@weser.netactive.de, relay =
0x5cea5943 local, msg_stats = {incoming_arrival = {tv_sec =
1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279125222,
tv_usec = 792273}, agent_handoff = {tv_sec = 1279125222, tv_usec =
906187}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done =
{tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from =
0x0, request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:319
#5  0x1124f246 in local_deliver (rqst=0x112be1a8, service=0x5cea5943
local) at local.c:718
#6  0x1124f3c5 in local_service (stream=0x112bd0c8, service=0x5cea5943
local, argv=0x5cea5880) at local.c:756
#7  0x11254c53 in single_server_wakeup (fd=14) at single_server.c:262
#8  0x11254e1d in single_server_accept_local (unused_event=1,
context=0x6 Address 0x6 out of bounds) at single_server.c:304
#9  0x1127a896 in event_loop (delay=-1) at events.c:1086
#10 0x11255bd6 in single_server_main (argc=3, argv=0x5cea5874,
service=0x1124f351 local_service) at single_server.c:732
#11 0x1124f892 in main (argc=3, argv=0x5cea5874) at local.c:917
8--

Here's postconf -n:

8--
address_verify_map = btree:/var/lib/postfix/verify
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/var/lib/mailman/data/aliases hash:/etc/mail/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = //usr/lib/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2