[kea-dev] OpenBSD: Kea 1.3.0

Patrik Lundin patrik at sigterm.se
Sat Dec 16 16:18:53 UTC 2017


Hello,

Here is a report of my porting efforts for kea 1.3.0 on OpenBSD.

I previously createid a pull request fixing another non-POSIX use of "test" in
the configure script, I am not sure why no one as looked at it yet:
https://github.com/isc-projects/kea/pull/53

I still see such an error when building 1.3.0:
===
./configure[16323]: test: >: unexpected operator/operand
===

There are a few build warnings being thrown as usual:
===
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
test_control.cc:(.text._ZN3isc8perfdhcp13PacketStorageINS_4dhcp4Pkt4EE9getRandomEv[_ZN3isc8perfdhcp13PacketStorageINS_4dhcp4Pkt4EE9getRandomEv]+0x33):
warning: warning: rand() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
.libs/libkea-asiolink.so.3.0: warning: warning: strcat() is almost always misused, please use strlcat()
.libs/libkea-dhcp++.so.3.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libkea-asiolink.so.3.0: warning: warning: sprintf() is often misused, please use snprintf()
===

I noticed that the example configuration now includes lfc-interval by default
so that is one less patch to keep track of, thanks :).

I did run into something odd: maxing out the log level will make the processes
reliably dump core when shutting down.

#1. Tweak the loglevel:
===
# diff -u /etc/kea/kea-dhcp4.conf.orig /etc/kea/kea-dhcp4.conf
--- /etc/kea/kea-dhcp4.conf.orig        Sat Dec 16 17:06:04 2017
+++ /etc/kea/kea-dhcp4.conf     Sat Dec 16 17:07:31 2017
@@ -447,12 +447,12 @@
         ],
         // This specifies the severity of log messages to keep. Supported values
         // are: FATAL, ERROR, WARN, INFO, DEBUG
-        "severity": "INFO",
+        "severity": "DEBUG",

         // If DEBUG level is specified, this value is used. 0 is least verbose,
         // 99 is most verbose. Be cautious, Kea can generate lots and lots
         // of logs if told to do so.
-        "debuglevel": 0
+        "debuglevel": 99
     }
   ]
 }
===

#2. Start the kea-dhcp4 process and then shut it down again.

Here is the resulting core file:
===
# gdb /usr/local/sbin/kea-dhcp4 /root/kea-dhcp4.core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd6.2"...(no debugging symbols found)

Core was generated by `kea-dhcp4'.
Program terminated with signal 10, Bus error.
Reading symbols from /usr/lib/libpthread.so.25.1...done.
Loaded symbols for /usr/lib/libpthread.so.25.1
Loaded symbols for /usr/local/sbin/kea-dhcp4
Symbols already loaded for /usr/lib/libpthread.so.25.1
Reading symbols from /usr/local/lib/libkea-dhcpsrv.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-dhcpsrv.so.3.0
Reading symbols from /usr/local/lib/libkea-eval.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-eval.so.3.0
Reading symbols from /usr/local/lib/libkea-dhcp++.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-dhcp++.so.3.0
Reading symbols from /usr/local/lib/libkea-asiolink.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-asiolink.so.3.0
Reading symbols from /usr/local/lib/libkea-exceptions.so.0.0...done.
Loaded symbols for /usr/local/lib/libkea-exceptions.so.0.0
Reading symbols from /usr/local/lib/libboost_system.so.6.0...done.
Loaded symbols for /usr/local/lib/libboost_system.so.6.0
Reading symbols from /usr/local/lib/libkea-dns++.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-dns++.so.2.0
Reading symbols from /usr/local/lib/libkea-cryptolink.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-cryptolink.so.1.0
Reading symbols from /usr/lib/libcrypto.so.42.0...done.
Loaded symbols for /usr/lib/libcrypto.so.42.0
Reading symbols from /usr/local/lib/libkea-util.so.1.1...done.
Loaded symbols for /usr/local/lib/libkea-util.so.1.1
Reading symbols from /usr/local/lib/libkea-log.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-log.so.2.0
Reading symbols from /usr/local/lib/libkea-threads.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-threads.so.1.0
Reading symbols from /usr/local/lib/liblog4cplus.so.2.0...done.
Loaded symbols for /usr/local/lib/liblog4cplus.so.2.0
Reading symbols from /usr/local/lib/libkea-dhcp_ddns.so.0.2...done.
Loaded symbols for /usr/local/lib/libkea-dhcp_ddns.so.0.2
Reading symbols from /usr/local/lib/libkea-cfgclient.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-cfgclient.so.2.0
Reading symbols from /usr/local/lib/libkea-cc.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-cc.so.2.0
Reading symbols from /usr/local/lib/libkea-hooks.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-hooks.so.3.0
Reading symbols from /usr/local/lib/libkea-stats.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-stats.so.1.0
Reading symbols from /usr/lib/libc++.so.1.0...done.
Loaded symbols for /usr/lib/libc++.so.1.0
Reading symbols from /usr/lib/libc++abi.so.0.0...done.
Loaded symbols for /usr/lib/libc++abi.so.0.0
Reading symbols from /usr/lib/libm.so.10.0...done.
Loaded symbols for /usr/lib/libm.so.10.0
Reading symbols from /usr/lib/libc.so.92.0...done.
Loaded symbols for /usr/lib/libc.so.92.0
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
#0  _rthread_mutex_timedlock (mutexp=Variable "mutexp" is not available.
) at /usr/src/lib/libc/thread/rthread_mutex.c:166
166                 (void *)mutex->owner);
(gdb) bt
#0  _rthread_mutex_timedlock (mutexp=Variable "mutexp" is not available.
) at /usr/src/lib/libc/thread/rthread_mutex.c:166
#1  0x00001a7db65b019c in isc::util::thread::Mutex::lock () from /usr/local/lib/libkea-threads.so.1.0
#2  0x00001a7dc8b6a4e5 in isc::log::LoggerImpl::outputRaw () from /usr/local/lib/libkea-log.so.2.0
#3  0x00001a7b8e604183 in isc::log::Formatter<isc::log::Logger>::~Formatter () from /usr/local/sbin/kea-dhcp4
#4  0x00001a7d9b7569b6 in isc::dhcp::TimerMgr::~TimerMgr () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#5  0x00001a7d9b757c78 in boost::detail::sp_counted_impl_p<isc::dhcp::TimerMgr>::dispose () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#6  0x00001a7d9b6c795b in isc::dhcp::CfgExpiration::~CfgExpiration () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#7  0x00001a7d9b747b0c in isc::dhcp::SrvConfig::~SrvConfig () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#8  0x00001a7d9b747e7f in isc::dhcp::SrvConfig::~SrvConfig () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#9  0x00001a7d9b6e1aaa in isc::dhcp::CfgMgr::~CfgMgr () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#10 0x00001a7e83198f1e in _libc___cxa_finalize (dso=0x0) at /usr/src/lib/libc/stdlib/atexit.c:159
#11 0x00001a7e83169ed1 in _libc_exit (status=0) at /usr/src/lib/libc/stdlib/exit.c:54
#12 0x00001a7b8e60184d in ?? () from /usr/local/sbin/kea-dhcp4
#13 0x0000000000000000 in ?? ()
Current language:  auto; currently minimal
(gdb)
===

Here is the equivalent dump for kea-dhcp6 when doing the same log level bump:
===
# gdb /usr/local/sbin/kea-dhcp6 /root/kea-dhcp6.core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd6.2"...(no debugging symbols found)

Core was generated by `kea-dhcp6'.
Program terminated with signal 10, Bus error.
Reading symbols from /usr/lib/libpthread.so.25.1...done.
Loaded symbols for /usr/lib/libpthread.so.25.1
Loaded symbols for /usr/local/sbin/kea-dhcp6
Symbols already loaded for /usr/lib/libpthread.so.25.1
Reading symbols from /usr/local/lib/libkea-dhcpsrv.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-dhcpsrv.so.3.0
Reading symbols from /usr/local/lib/libkea-eval.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-eval.so.3.0
Reading symbols from /usr/local/lib/libkea-dhcp++.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-dhcp++.so.3.0
Reading symbols from /usr/local/lib/libkea-asiolink.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-asiolink.so.3.0
Reading symbols from /usr/local/lib/libkea-exceptions.so.0.0...done.
Loaded symbols for /usr/local/lib/libkea-exceptions.so.0.0
Reading symbols from /usr/local/lib/libboost_system.so.6.0...done.
Loaded symbols for /usr/local/lib/libboost_system.so.6.0
Reading symbols from /usr/local/lib/libkea-dns++.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-dns++.so.2.0
Reading symbols from /usr/local/lib/libkea-cryptolink.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-cryptolink.so.1.0
Reading symbols from /usr/lib/libcrypto.so.42.0...done.
Loaded symbols for /usr/lib/libcrypto.so.42.0
Reading symbols from /usr/local/lib/libkea-util.so.1.1...done.
Loaded symbols for /usr/local/lib/libkea-util.so.1.1
Reading symbols from /usr/local/lib/libkea-log.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-log.so.2.0
Reading symbols from /usr/local/lib/libkea-threads.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-threads.so.1.0
Reading symbols from /usr/local/lib/liblog4cplus.so.2.0...done.
Loaded symbols for /usr/local/lib/liblog4cplus.so.2.0
Reading symbols from /usr/local/lib/libkea-dhcp_ddns.so.0.2...done.
Loaded symbols for /usr/local/lib/libkea-dhcp_ddns.so.0.2
Reading symbols from /usr/local/lib/libkea-cfgclient.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-cfgclient.so.2.0
Reading symbols from /usr/local/lib/libkea-cc.so.2.0...done.
Loaded symbols for /usr/local/lib/libkea-cc.so.2.0
Reading symbols from /usr/local/lib/libkea-hooks.so.3.0...done.
Loaded symbols for /usr/local/lib/libkea-hooks.so.3.0
Reading symbols from /usr/local/lib/libkea-stats.so.1.0...done.
Loaded symbols for /usr/local/lib/libkea-stats.so.1.0
Reading symbols from /usr/lib/libc++.so.1.0...done.
Loaded symbols for /usr/lib/libc++.so.1.0
Reading symbols from /usr/lib/libc++abi.so.0.0...done.
Loaded symbols for /usr/lib/libc++abi.so.0.0
Reading symbols from /usr/lib/libm.so.10.0...done.
Loaded symbols for /usr/lib/libm.so.10.0
Reading symbols from /usr/lib/libc.so.92.0...done.
Loaded symbols for /usr/lib/libc.so.92.0
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
#0  _rthread_mutex_timedlock (mutexp=Variable "mutexp" is not available.
) at /usr/src/lib/libc/thread/rthread_mutex.c:166
166                 (void *)mutex->owner);
(gdb) bt
#0  _rthread_mutex_timedlock (mutexp=Variable "mutexp" is not available.
) at /usr/src/lib/libc/thread/rthread_mutex.c:166
#1  0x000011677984219c in isc::util::thread::Mutex::lock () from /usr/local/lib/libkea-threads.so.1.0
#2  0x00001166c64ad4e5 in isc::log::LoggerImpl::outputRaw () from /usr/local/lib/libkea-log.so.2.0
#3  0x00001164a3e04063 in isc::log::Formatter<isc::log::Logger>::~Formatter () from /usr/local/sbin/kea-dhcp6
#4  0x00001166afdbf9b6 in isc::dhcp::TimerMgr::~TimerMgr () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#5  0x00001166afdc0c78 in boost::detail::sp_counted_impl_p<isc::dhcp::TimerMgr>::dispose () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#6  0x00001166afd3095b in isc::dhcp::CfgExpiration::~CfgExpiration () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#7  0x00001166afdb0b0c in isc::dhcp::SrvConfig::~SrvConfig () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#8  0x00001166afdb0e7f in isc::dhcp::SrvConfig::~SrvConfig () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#9  0x00001166afd4aaaa in isc::dhcp::CfgMgr::~CfgMgr () from /usr/local/lib/libkea-dhcpsrv.so.3.0
#10 0x00001166bc632f1e in _libc___cxa_finalize (dso=0x0) at /usr/src/lib/libc/stdlib/atexit.c:159
#11 0x00001166bc603ed1 in _libc_exit (status=0) at /usr/src/lib/libc/stdlib/exit.c:54
#12 0x00001164a3e0172d in ?? () from /usr/local/sbin/kea-dhcp6
#13 0x0000000000000000 in ?? ()
Current language:  auto; currently minimal
(gdb)
===

Regards,
Patrik Lundin


More information about the kea-dev mailing list