[Swan-dev] [Swan] Pluto not running?

D. Hugh Redelmeier hugh at mimosa.com
Sun Oct 29 17:57:37 UTC 2017


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 <charlie at imdgn.com>
| To: Paul Wouters <paul at nohats.ca>
| Cc: "swan at lists.libreswan.org" <swan at lists.libreswan.org>
| 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 at 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 at 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 at 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 at 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 at 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:paul at nohats.ca] 
| Sent: Wednesday, October 25, 2017 12:48 PM
| To: Charles Van Dusen <charlie at imdgn.com>
| Cc: swan at lists.libreswan.org
| 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
| Swan at lists.libreswan.org
| https://lists.libreswan.org/mailman/listinfo/swan
| 


More information about the Swan-dev mailing list