Andrew: I think that this problem belongs to you.

This looks to me as if it is a recursive loop with passert.

passert calls logging

logging calls passert and it fires

passert calls logging

This cycle will not end well.

Possible solutions:

- forbid passert calls in the logging code that could be invoked,
  directly or indirectly, by passert (hard (because this is a global
  property not a local one) and counter-productive (because we would like
  to detect bugs in that code))

- keep passert calls in logging but prove that they cannot fire (good
  luck)

- add back "dying_breath" logic.  The idea (if I remember correctly)
  was to dynamically detect a recursive loop and break it when it
  happened.  The original reason was that the passert code was trying
  to show the affected state but the state might have been broken enough
  that the showing code might passert.  But the idea generalizes.

  Pragmatically it would be nice to break the loop after something
  useful hit the log but that might not be practical with the new
  generation logging.

| From: Charles Van Dusen <[email protected]>
| To: Paul Wouters <[email protected]>
| Cc: "[email protected]" <[email protected]>
| Date: Wed, 25 Oct 2017 17:22:33 +0000
| Subject: Re: [Swan] Pluto not running?
| 
| Hi Paul,
| 
| Thanks for the quick response. I am a newb to gdb, but here is the result:
| 
| (gdb) bt
| #0  __pthread_self () at pthread_self.c:25
| #1  0x00445880 in add_state_prefix (buf=0x7e800168) at 
/home/pi/libreswan-3.22/programs/pluto/log.c:151
| #2  0x004b8744 in lsw_passert_fail (file=0x50f40c "lswlog.c", 
line=line@entry=43, func=0x50f3c0 <__func__.9160> "dest", fmt=0x50c224 "%s")
|     at /home/pi/libreswan-3.22/lib/libswan/lsw_passert_fail.c:29
| #3  0x004b8fb8 in dest (log=0x7e800168) at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:43
| #4  0x004b912c in lswlogs () at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:158
| #5  0x004b8754 in lsw_passert_fail (file=0x50f40c "lswlog.c", 
line=line@entry=43, func=0x50f3c0 <__func__.9160> "dest", fmt=0x50c224 "%s")
|     at /home/pi/libreswan-3.22/lib/libswan/lsw_passert_fail.c:30
| #6  0x004b8fb8 in dest (log=0x7e8005d0) at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:43
| #7  0x004b912c in lswlogs () at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:158
| #8  0x004b8754 in lsw_passert_fail (file=0x50f40c "lswlog.c", 
line=line@entry=43, func=0x50f3c0 <__func__.9160> "dest", fmt=0x50c224 "%s")
|     at /home/pi/libreswan-3.22/lib/libswan/lsw_passert_fail.c:30
| #9  0x004b8fb8 in dest (log=0x7e800a38) at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:43
| #10 0x004b912c in lswlogs () at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:158
| #11 0x004b8754 in lsw_passert_fail (file=0x50f40c "lswlog.c", 
line=line@entry=43, func=0x50f3c0 <__func__.9160> "dest", fmt=0x50c224 "%s")
|     at /home/pi/libreswan-3.22/lib/libswan/lsw_passert_fail.c:30
| #12 0x004b8fb8 in dest (log=0x7e800ea0) at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:43
| #13 0x004b912c in lswlogs () at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:158
| #14 0x004b8754 in lsw_passert_fail (file=0x50f40c "lswlog.c", 
line=line@entry=43, func=0x50f3c0 <__func__.9160> "dest", fmt=0x50c224 "%s")
|     at /home/pi/libreswan-3.22/lib/libswan/lsw_passert_fail.c:30
| #15 0x004b8fb8 in dest (log=0x7e801308) at 
/home/pi/libreswan-3.22/lib/libswan/lswlog.c:43
| 
| Does that help? Anything else I can do to provide more helpful info?
| 
| -----Original Message-----
| From: Paul Wouters [mailto:[email protected]] 
| Sent: Wednesday, October 25, 2017 12:48 PM
| To: Charles Van Dusen <[email protected]>
| Cc: [email protected]
| Subject: Re: [Swan] Pluto not running?
| 
| On Wed, 25 Oct 2017, Charles Van Dusen wrote:
| 
| > I have another new install on a raspberry pi (Raspbian stretch). With 
Version 3.22 I am unable to start ipsec:
| 
| >   Process: 3407 ExecStart=/usr/local/libexec/ipsec/pluto --leak-detective 
--config /etc/ipsec.conf --nofork (code=killed,
| > signal=SEGV)
| 
| Looks like we crashed. Do you have gdb there, then you can run:
| 
| ipsec _stackmanager start
| gdb /usr/libexec/ipsec/pluto
| run --config /etc/ipsec.conf --nofork --stderrlog
| 
| and after it crashes:
| 
| bt
| 
| Paul
| _______________________________________________
| Swan mailing list
| [email protected]
| https://lists.libreswan.org/mailman/listinfo/swan
| 
_______________________________________________
Swan-dev mailing list
[email protected]
https://lists.libreswan.org/mailman/listinfo/swan-dev

Reply via email to