Project

General

Profile

Bug #518

lookip not returning on 5.1.2rc1

Added by Jonathan Davies over 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
libstrongswan
Target version:
Start date:
16.02.2014
Due date:
Estimated time:
Affected version:
dr|rc|master
Resolution:
Fixed

Description

Hello,

I've upgraded my boxen to 5.1.2rc1 and the lookip plugin doesn't appear to be working any more:

$ sudo strace /usr/lib/ipsec/lookip --dump
execve("/usr/lib/ipsec/lookip", ["/usr/lib/ipsec/lookip", "--dump"], [/* 24 vars */]) = 0
brk(0)                                  = 0x7f05e06a6000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f05dee61000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=18321, ...}) = 0
mmap(NULL, 18321, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f05dee5c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\37\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1849120, ...}) = 0
mmap(NULL, 3957440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f05de87a000
mprotect(0x7f05dea36000, 2097152, PROT_NONE) = 0
mmap(0x7f05dec36000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bc000) = 0x7f05dec36000
mmap(0x7f05dec3c000, 17088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f05dec3c000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f05dee5b000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f05dee59000
arch_prctl(ARCH_SET_FS, 0x7f05dee59740) = 0
mprotect(0x7f05dec36000, 16384, PROT_READ) = 0
mprotect(0x7f05df067000, 4096, PROT_READ) = 0
mprotect(0x7f05dee63000, 4096, PROT_READ) = 0
munmap(0x7f05dee5c000, 18321)           = 0
socket(PF_LOCAL, SOCK_STREAM, 0)        = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/charon.lkp"}, 21) = 0
write(3, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 44) = 44
recvfrom(3, 0x7fff96a24910, 384, 64, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
write(3, "\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 44) = 44
recvfrom(3,

Even --help blocks in the same curious way.

Associated revisions

Revision 961409b6 (diff)
Added by Martin Willi over 5 years ago

lookip: Disconnect asynchronously to avoid dead-locking watcher unregistration

While it really would be desirable to allow stream destruction during on_read()
callbacks, this does not work anymore since e49b2998. Until we have a proper
solution for this issue, use asynchronous disconnects for the only user doing
so.

Fixes #518.

Revision 7867ae42 (diff)
Added by Tobias Brunner over 5 years ago

lookip: Properly return from disconnect callback job

References #518.

History

#1 Updated by Martin Willi over 5 years ago

  • Category set to libstrongswan
  • Status changed from New to Feedback
  • Assignee set to Martin Willi

Hi Jonathan,

Thanks for catching and reporting that. Looks like a regression I introduced with e49b2998.

Fixing this properly is difficult, but the referenced commit should work-around the issue by using an asynchronous disconnect.

Regards
Martin

#2 Updated by Tobias Brunner about 5 years ago

  • Tracker changed from Issue to Bug
  • Target version set to 5.1.3
  • Resolution set to Fixed

#3 Updated by Tobias Brunner about 5 years ago

  • Status changed from Feedback to Closed

Also available in: Atom PDF