Hello Anton,

On Fri, 14 Dec 2018 16:34:23 -0500 Anton Avramov <lu...@lukav.com> wrote:
> Hello Bernhard,
> 
> Well no. I've actually installed. apt install 
> libmariadbclient18=10.1.26-0+deb9u1 libmariadbclient18-dbgsym
> 
> (gdb) display/i $pc
> 2: x/i $pc
> => 0x7ffff479eccc <mysql_stmt_bind_result+172>:    movzbl 0x451(%rax),%eax

At this instruction $rax seems to contain the address stored in stmt->mysql.
This address seems to be invalid in your process.
And therefore accessing the options member crashes.


Could you please add the output of following commands, when the crash happened:
  print/x $rax
  print stmt->mysql
  print stmt
  set print pretty on
  print *stmt
  print *stmt->mysql
  set print pretty off
  up
  print 
conn_.statements_[isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID]
  up
  x/6xb identifier_begin


The last line should output 6 bytes showing the MAC address of the
requesting client. Maybe you could check if that crash is
triggered always by the same client or kind of client.


I looked through upstream git history and commits [1] and [2] might be
related: they disable automatic reconnects.
No such commit seem to have reached the stretch version of kea-dhcp:
./isc-kea-1.1.0/src/lib/dhcpsrv/mysql_connection.cc:138:    my_bool 
auto_reconnect = MLM_TRUE;


Kind regards,
Bernhard


(gdb) list libmysql.c:4134
4129                  field->type, param_count);
4130          DBUG_RETURN(1);
4131        }
4132      }
4133      stmt->bind_result_done= BIND_RESULT_DONE;
4134      if (stmt->mysql->options.report_data_truncation)
4135        stmt->bind_result_done|= REPORT_DATA_TRUNCATION;
4136
4137      DBUG_RETURN(0);
4138    }


[1] 
https://gitlab.isc.org/isc-projects/kea/commit/9881ef6d772f27de82c048e198ba0ff9e71b9351
[2] 
https://gitlab.isc.org/isc-projects/kea/commit/6b278a3f54ecf6bd6e2d381047a9eced4bf165f5

# From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916288#5

Thread 1 "kea-dhcp4" received signal SIGSEGV, Segmentation fault.
0x00007ffff47f525c in mysql_stmt_bind_result () from 
/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18
(gdb) (gdb) bt
#0  0x00007ffff47f525c in mysql_stmt_bind_result () from 
/usr/lib/x86_64-linux-gnu/libmariadbclient.so.18
#1  0x00007ffff7a9ed19 in ?? () from 
/usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#2  0x00007ffff7a9f540 in ?? () from 
/usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#3  0x00007ffff7aa0551 in isc::dhcp::MySqlHostDataSource::get4(unsigned int 
const&, isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long) const ()from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#4  0x00007ffff7a5acba in isc::dhcp::HostMgr::get4(unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long) 
const ()from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#5  0x00007ffff79eeb8c in boost::shared_ptr<isc::dhcp::Host const> 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>::call<isc::dhcp::HostMgr* const, unsigned int const, 
isc::dhcp::Host::IdentifierType const, unsigned char const*, unsigned 
long>(isc::dhcp::HostMgr* const&, void const*, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*&, unsigned long&) 
const () from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#6  0x00007ffff79ed9b1 in boost::shared_ptr<isc::dhcp::Host const> 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>::operator()<isc::dhcp::HostMgr*>(isc::dhcp::HostMgr* 
const&, unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned 
char const*, unsigned long) const () from 
/usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#7  0x00007ffff79ec881 in boost::shared_ptr<isc::dhcp::Host const> 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> 
>::operator()<boost::shared_ptr<isc::dhcp::Host const>, 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>, boost::_bi::rrlist4<unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long> 
>(boost::_bi::type<boost::shared_ptr<isc::dhcp::Host const> >, 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>&, boost::_bi::rrlist4<unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long>&, 
long) () from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#8  0x00007ffff79eadbe in boost::shared_ptr<isc::dhcp::Host const> 
boost::_bi::bind_t<boost::shared_ptr<isc::dhcp::Host const>, 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>, 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> > >::operator()<unsigned int 
const&, isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>(unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned 
char const*&&, unsigned long&&) () from 
/usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#9  0x00007ffff79e83e8 in 
boost::detail::function::function_obj_invoker4<boost::_bi::bind_t<boost::shared_ptr<isc::dhcp::Host
 const>, boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, 
isc::dhcp::HostMgr, unsigned int const&, isc::dhcp::Host::IdentifierType 
const&, unsigned char const*, unsigned long>, 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> > >, 
boost::shared_ptr<isc::dhcp::Host const>, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>::invoke(boost::detail::function::function_buffer&, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long) () 
from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#10 0x00007ffff79e0a28 in boost::function4<boost::shared_ptr<isc::dhcp::Host 
const>, unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned 
char const*, unsigned long>::operator()(unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long) 
const () from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#11 0x00007ffff79de266 in void 
isc::dhcp::AllocEngine::findReservationInternal<isc::dhcp::AllocEngine::ClientContext4>(isc::dhcp::AllocEngine::ClientContext4&,
 boost::function<boost::shared_ptr<isc::dhcp::Host const> (unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long)> 
const&) () from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#12 0x00007ffff79d2ef2 in 
isc::dhcp::AllocEngine::findReservation(isc::dhcp::AllocEngine::ClientContext4&)
 () from /usr/lib/x86_64-linux-gnu/libkea-dhcpsrv.so.6
#13 0x00005555555d6c6c in isc::dhcp::Dhcpv4Exchange::Dhcpv4Exchange 
(this=0x7fffffffdc90, alloc_engine=..., query=..., subnet=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:156
#14 0x00005555555e4002 in isc::dhcp::Dhcpv4Srv::processRequest 
(this=0x7fffffffe4a0, request=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:2156
#15 0x00005555555dc7b6 in isc::dhcp::Dhcpv4Srv::processPacket 
(this=0x7fffffffe4a0, query=..., rsp=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:984
#16 0x00005555555dae58 in isc::dhcp::Dhcpv4Srv::run_one (this=0x7fffffffe4a0) 
at ../../../../src/bin/dhcp4/dhcp4_srv.cc:767
#17 0x00005555555da94c in isc::dhcp::Dhcpv4Srv::run (this=0x7fffffffe4a0) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:681
#18 0x00005555555b916a in main (argc=4, argv=0x7fffffffe688) at 
../../../../src/bin/dhcp4/main.cc:166

#############

From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916288#18

Thread 1 "kea-dhcp4" received signal SIGSEGV, Segmentation fault.
mysql_stmt_bind_result (stmt=0x5555558f6be8, my_bind=<optimized out>) at 
./libmysql/libmysql.c:4134
4134    ./libmysql/libmysql.c: Няма такъв файл или директория.
(gdb)
(gdb)
(gdb) bt
#0  mysql_stmt_bind_result (stmt=0x5555558f6be8, my_bind=<optimized out>) at 
./libmysql/libmysql.c:4134
#1  0x00007ffff7a9ed19 in isc::dhcp::MySqlHostDataSourceImpl::getHostCollection 
(this=0x5555558d6840, 
stindex=isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID, 
bind=0x7fffffffd340, exchange=...,    result=std::vector of length 0, capacity 
0, single=true) at ../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2262
#2  0x00007ffff7a9f540 in isc::dhcp::MySqlHostDataSourceImpl::getHost 
(this=0x5555558d6840, subnet_id=@0x7fffffffd8ac: 1, 
identifier_type=@0x555555914250: isc::dhcp::Host::IDENT_HWADDR, 
identifier_begin=0x555555884550 "\b",    identifier_len=6, 
stindex=isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID, 
exchange=...) at ../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2345
#3  0x00007ffff7aa0551 in isc::dhcp::MySqlHostDataSource::get4 
(this=0x555555849370, subnet_id=@0x7fffffffd8ac: 1, 
identifier_type=@0x555555914250: isc::dhcp::Host::IDENT_HWADDR, 
identifier_begin=0x555555884550 "\b",    identifier_len=6) at 
../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2521
#4  0x00007ffff7a5acba in isc::dhcp::HostMgr::get4 (this=0x5555558492b0, 
subnet_id=@0x7fffffffd8ac: 1, identifier_type=@0x555555914250: 
isc::dhcp::Host::IDENT_HWADDR, identifier_begin=0x555555884550 "\b", 
identifier_len=6)    at ../../../../src/lib/dhcpsrv/host_mgr.cc:134
#5  0x00007ffff79eeb8c in boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host 
const>, isc::dhcp::HostMgr, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>::call<isc::dhcp::HostMgr* const, unsigned int const, 
isc::dhcp::Host::IdentifierType const, unsigned char const*, unsigned long> 
(this=0x7fffffffd988, u=@0x7fffffffd998: 0x5555558492b0, b1=@0x7fffffffd8ac: 1, 
   b2=@0x555555914250: isc::dhcp::Host::IDENT_HWADDR, b3=@0x7fffffffd630: 
0x555555884550 "\b", b4=@0x7fffffffd680: 6) at 
/usr/include/boost/bind/mem_fn_template.hpp:561
#6  0x00007ffff79ed9b1 in boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host 
const>, isc::dhcp::HostMgr, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>::operator()<isc::dhcp::HostMgr*> (this=0x7fffffffd988, u=@0x7fffffffd998: 
0x5555558492b0, a1=@0x7fffffffd8ac: 1, a2=@0x555555914250: 
isc::dhcp::Host::IDENT_HWADDR, a3=0x555555884550 "\b", a4=6) at 
/usr/include/boost/bind/mem_fn_template.hpp:571
#7  0x00007ffff79ec881 in 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> 
>::operator()<boost::shared_ptr<isc::dhcp::Host const>, 
boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, isc::dhcp::HostMgr, 
unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned char 
const*, unsigned long>, boost::_bi::rrlist4<unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long> > 
(this=0x7fffffffd998, f=..., a=...) at /usr/include/boost/bind/bind.hpp:521
#8  0x00007ffff79eadbe in boost::_bi::bind_t<boost::shared_ptr<isc::dhcp::Host 
const>, boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, 
isc::dhcp::HostMgr, unsigned int const&, isc::dhcp::Host::IdentifierType 
const&, unsigned char const*, unsigned long>, 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> > >::operator()<unsigned int 
const&, isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>(unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned 
char const*&&, unsigned long&&) (this=0x7fffffffd988, a1=@0x7fffffffd8ac: 1,    
a2=@0x555555914250: isc::dhcp::Host::IDENT_HWADDR, a3=<unknown type in 
/usr/lib/debug/.build-id/f9/bc9131c938ea0212083231a71f5a9cbed76ac0.debug, CU 
0xbaca, DIE 0x68cf1>,    a4=<unknown type in 
/usr/lib/debug/.build-id/f9/bc9131c938ea0212083231a71f5a9cbed76ac0.debug, CU 
0xbaca, DIE 0x68cfd>) at /usr/include/boost/bind/bind.hpp:1342
#9  0x00007ffff79e83e8 in 
boost::detail::function::function_obj_invoker4<boost::_bi::bind_t<boost::shared_ptr<isc::dhcp::Host
 const>, boost::_mfi::cmf4<boost::shared_ptr<isc::dhcp::Host const>, 
isc::dhcp::HostMgr, unsigned int const&, isc::dhcp::Host::IdentifierType 
const&, unsigned char const*, unsigned long>, 
boost::_bi::list5<boost::_bi::value<isc::dhcp::HostMgr*>, boost::arg<1>, 
boost::arg<2>, boost::arg<3>, boost::arg<4> > >, 
boost::shared_ptr<isc::dhcp::Host const>, unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned 
long>::invoke (function_obj_ptr=..., a0=@0x7fffffffd8ac: 1, a1=@0x555555914250: 
isc::dhcp::Host::IDENT_HWADDR,    a2=0x555555884550 "\b", a3=6) at 
/usr/include/boost/function/function_template.hpp:138
#10 0x00007ffff79e0a28 in boost::function4<boost::shared_ptr<isc::dhcp::Host 
const>, unsigned int const&, isc::dhcp::Host::IdentifierType const&, unsigned 
char const*, unsigned long>::operator() (this=0x7fffffffd980,    
a0=@0x7fffffffd8ac: 1, a1=@0x555555914250: isc::dhcp::Host::IDENT_HWADDR, 
a2=0x555555884550 "\b", a3=6) at 
/usr/include/boost/function/function_template.hpp:771
#11 0x00007ffff79de266 in 
isc::dhcp::AllocEngine::findReservationInternal<isc::dhcp::AllocEngine::ClientContext4>(isc::dhcp::AllocEngine::ClientContext4&,
 boost::function<boost::shared_ptr<isc::dhcp::Host const> (unsigned int const&, 
isc::dhcp::Host::IdentifierType const&, unsigned char const*, unsigned long)> 
const&) (ctx=..., host_get=...) at 
../../../../src/lib/dhcpsrv/alloc_engine.cc:319
#12 0x00007ffff79d2ef2 in isc::dhcp::AllocEngine::findReservation (ctx=...) at 
../../../../src/lib/dhcpsrv/alloc_engine.cc:2232
#13 0x00005555555d6c6c in isc::dhcp::Dhcpv4Exchange::Dhcpv4Exchange 
(this=0x7fffffffdc90, alloc_engine=..., query=..., subnet=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:156
#14 0x00005555555e4002 in isc::dhcp::Dhcpv4Srv::processRequest 
(this=0x7fffffffe4a0, request=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:2156
#15 0x00005555555dc7b6 in isc::dhcp::Dhcpv4Srv::processPacket 
(this=0x7fffffffe4a0, query=..., rsp=...) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:984
#16 0x00005555555dae58 in isc::dhcp::Dhcpv4Srv::run_one (this=0x7fffffffe4a0) 
at ../../../../src/bin/dhcp4/dhcp4_srv.cc:767
#17 0x00005555555da94c in isc::dhcp::Dhcpv4Srv::run (this=0x7fffffffe4a0) at 
../../../../src/bin/dhcp4/dhcp4_srv.cc:681
#18 0x00005555555b916a in main (argc=4, argv=0x7fffffffe688) at 
../../../../src/bin/dhcp4/main.cc:166


#############


# stretch amd64 qemu vm, with additional two loopback connected network devices:

#    -netdev hubport,id=hub1,hubid=0 -device 
rtl8139,netdev=hub1,mac=00:12:34:56:78:9b
#    -netdev hubport,id=hub2,hubid=0 -device 
rtl8139,netdev=hub2,mac=00:12:34:56:78:9c
#
#    (qemu) info network
#    hub 0
#    \ hub2: rtl8139.1: index=0,type=nic,model=rtl8139,macaddr=00:12:34:56:78:9c
#    \ hub1: rtl8139.0: index=0,type=nic,model=rtl8139,macaddr=00:12:34:56:78:9b
#    virtio-net-pci.0: 
index=0,type=nic,model=virtio-net-pci,macaddr=00:12:34:56:78:9a
#    \ net0: index=0,type=user,net=10.0.2.0,restrict=off


#    # ip addr
#    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 
UP group default qlen 1000
#        link/ether 00:12:34:56:78:9a brd ff:ff:ff:ff:ff:ff
#    ...
#    3: ens4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group 
default qlen 1000
#        link/ether 00:12:34:56:78:9b brd ff:ff:ff:ff:ff:ff
#    4: ens5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group 
default qlen 1000
#        link/ether 00:12:34:56:78:9c brd ff:ff:ff:ff:ff:ff




apt update
apt dist-upgrade




#    apt-get install software-properties-common dirmngr
#    apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
#
#    cat <<EOF > /etc/apt/sources.list.d/mariadb-10.2-upstream.list
#    # MariaDB 10.2 repository list - created 2018-12-14 12:34 UTC
#    # http://downloads.mariadb.org/mariadb/repositories/
#    deb [arch=amd64,i386,ppc64el] 
http://mirror.23media.de/mariadb/repo/10.2/debian stretch main
#    deb-src http://mirror.23media.de/mariadb/repo/10.2/debian stretch main
#    EOF
#
#    apt update
#    # cat 
/var/lib/apt/lists/mirror.23media.de_mariadb_repo_10.2_debian_dists_stretch_main_binary-amd64_Packages
 | grep -E "^Package.*dbg"
#    # With 10.2.19+maria~stretch
#    2018-12-14 17:13:42.313 ERROR [kea-dhcp4.alloc-engine/16974] 
ALLOC_ENGINE_V4_ALLOC_ERROR [hwtype=1 00:00:00:11:11:11], cid=[no info], 
tid=0x4edd5699: error during attempt to allocate an IPv4 address: unable to 
bind parameters for <INSERT INTO lease4(address, hwaddr, client_id, 
valid_lifetime, expire, subnet_id, fqdn_fwd, fqdn_rev, hostname, state) VALUES 
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)>, reason:  (error code 0)





apt install libmariadbclient18=10.1.26-0+deb9u1 
libmariadbclient18-dbgsym=10.1.26-0+deb9u1 mariadb-client=10.1.26-0+deb9u1 
mariadb-client-10.1=10.1.26-0+deb9u1 mariadb-client-core-10.1=10.1.26-0+deb9u1 
mariadb-common=10.1.26-0+deb9u1 mariadb-server=10.1.26-0+deb9u1 
mariadb-server-10.1=10.1.26-0+deb9u1 mariadb-server-core-10.1=10.1.26-0+deb9u1



apt install dpkg-dev devscripts systemd-coredump net-tools nmap unzip mc 
build-essential dhcpstarv python-pydhcplib gdb kea-admin kea-dhcp4-server 
kea-dhcp4-server-dbgsym kea-common-dbgsym

apt build-dep mariadb-10.1





mkdir kea-dhcp4-server/orig -p
cd    kea-dhcp4-server/orig
apt source kea-dhcp4-server
cd ../..



mkdir mariadb-10.1/orig -p
cd    mariadb-10.1/orig
apt source mariadb-10.1=10.1.26-0+deb9u1
cd ../..



wget https://github.com/saravana815/dhtest/archive/master.zip -O 
dhtest-master.zip
unzip dhtest-master.zip
cd dhtest-master
make
cd ..



wget https://github.com/alexproca/dhquery/archive/master.zip -O 
dhquery-master.zip
unzip dhquery-master.zip





# ftp://ftp.isc.org/isc/kea/1.1.0/doc/kea-guide.html#idp49015504



mysql -u root -p
    CREATE DATABASE keadhcp4;
    CREATE USER 'keadhcp4'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL ON keadhcp4.* TO 'keadhcp4'@'localhost';
    CONNECT keadhcp4;
    SOURCE /usr/share/kea-admin/scripts/mysql/dhcpdb_create.mysql
    quit


sed 's/"type": "memfile"/"type": "mysql", "name": "keadhcp4", "host" : "", 
"user": "keadhcp4", "password": "password"\n  },\n  "hosts-database": {\n    
"type": "mysql", "name": "keadhcp4", "host" : "", "user": "keadhcp4", 
"password": "password"/' -i /etc/kea/kea-dhcp4.conf
sed 's/"interfaces": \[ \]/"interfaces": \[ "ens4" \]/' -i 
/etc/kea/kea-dhcp4.conf
sed 's/#  {    "subnet"/  {    "subnet"/' -i /etc/kea/kea-dhcp4.conf
sed 's/#       "pools"/       "pools"/' -i /etc/kea/kea-dhcp4.conf
sed 's/"valid-lifetime": 4000,/"valid-lifetime": 20,/' -i 
/etc/kea/kea-dhcp4.conf



cat <<EOF >> /etc/network/interfaces
iface ens4 inet static
  address 192.0.2.1
iface ens5 inet dhcp
  hwaddress ether 00:01:04:1b:2C:1F
EOF


ifup ens4



systemctl stop kea-dhcp4-server
systemctl start kea-dhcp4-server


root@debian:~# ps aux | grep kea
root      1090  0.2  0.7 139980 22408 ?        Ssl  04:48   0:00 
/usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf
root@debian:~# netstat -anp | grep :67
udp        0      0 192.0.2.1:67            0.0.0.0:*                           
1090/kea-dhcp4      





ifup ens5




#   /home/benutzer/dhtest-master/dhtest -i ens5 -m 00:00:00:11:11:11
#   /home/benutzer/dhtest-master/dhtest -i ens5 -m 00:00:00:11:11:11 -r




###########


(gdb) list libmysql.c:4134
4129                  field->type, param_count);
4130          DBUG_RETURN(1);
4131        }
4132      }
4133      stmt->bind_result_done= BIND_RESULT_DONE;
4134      if (stmt->mysql->options.report_data_truncation)
4135        stmt->bind_result_done|= REPORT_DATA_TRUNCATION;
4136
4137      DBUG_RETURN(0);
4138    }

(gdb) bt
#0  mysql_stmt_bind_result (stmt=0x5579726e5af8, my_bind=<optimized out>) at 
./libmysql/libmysql.c:4134
#1  0x00007ff5a39f4d19 in isc::dhcp::MySqlHostDataSourceImpl::getHostCollection 
(this=0x5579726c59b0, 
stindex=isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID, 
bind=0x7ffd6ebfa770, exchange=..., result=std::vector of length 0, capacity 0, 
single=true) at ../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2262
#2  0x00007ff5a39f5540 in isc::dhcp::MySqlHostDataSourceImpl::getHost 
(this=0x5579726c59b0, subnet_id=@0x7ffd6ebfacdc: 1, 
identifier_type=@0x55797270d560: isc::dhcp::Host::IDENT_HWADDR, 
identifier_begin=0x557972673480 "", identifier_len=6, 
stindex=isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID, 
exchange=...) at ../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2345
...
(gdb) display/i $pc
6: x/i $pc
=> 0x7ff5a06f4ccc <mysql_stmt_bind_result+172>: movzbl 0x451(%rax),%eax
(gdb) print/x $rax
$7 = 0x5579726d60f8
(gdb) print stmt->mysql
$8 = (MYSQL *) 0x5579726d60f8
(gdb) print stmt
$9 = (MYSQL_STMT *) 0x5579726e5af8
(gdb) set print pretty on
(gdb) print *stmt        
$11 = {
  mem_root = {
    free = 0x5579726e5e38, 
    used = 0x5579726e8bc8, 
    pre_alloc = 0x5579726e5e38, 
    min_malloc = 32, 
    block_size = 2009, 
    block_num = 6, 
    first_block_usage = 0, 
    error_handler = 0x0
  }, 
  list = {
    prev = 0x5579726e9560, 
    next = 0x5579726e1b80, 
    data = 0x5579726e5af8
  }, 
  mysql = 0x5579726d60f8, 
  params = 0x5579726e8be0, 
  bind = 0x5579726e8d30, 
  fields = 0x5579726e6680, 
  result = {
    data = 0x0, 
    embedded_info = 0x0, 
    alloc = {
      free = 0x5579726e7b98, 
      used = 0x0, 
      pre_alloc = 0x5579726e7b98, 
      min_malloc = 24, 
      block_size = 4057, 
      block_num = 4, 
      first_block_usage = 0, 
      error_handler = 0x0
    }, 
    rows = 0, 
    fields = 0, 
    extension = 0x0
  }, 
  data_cursor = 0x0, 
  read_row_func = 0x7ff5a06f3630 <stmt_read_row_no_result_set>, 
  affected_rows = 0, 
  insert_id = 0, 
  stmt_id = 3, 
  flags = 0, 
  prefetch_rows = 1, 
  server_status = 2, 
  last_errno = 0, 
  param_count = 3, 
  field_count = 18, 
  state = MYSQL_STMT_PREPARE_DONE, 
  last_error = '\000' <repeats 511 times>, 
  sqlstate = "00000", 
  send_types_to_server = 1 '\001', 
  bind_param_done = 1 '\001', 
  bind_result_done = 1 '\001', 
  unbuffered_fetch_cancelled = 0 '\000', 
  update_max_length = 0 '\000', 
  extension = 0x5579726d6808
}
(gdb) print *stmt->mysql
$23 = {
  net = {
    vio = 0x5579726d8ad8, 
    buff = 0x5579726dcce8 "\376", 
    buff_end = 0x5579726dece8 "", 
    write_pos = 0x5579726dcce8 "\376", 
    read_pos = 0x5579726dcce8 "\376", 
    fd = 6, 
    remain_in_buf = 0, 
    length = 0, 
    buf_length = 0, 
    where_b = 0, 
    max_packet = 8192, 
    max_packet_size = 1073741824, 
    pkt_nr = 22, 
    compress_pkt_nr = 22, 
    write_timeout = 31536000, 
    read_timeout = 31536000, 
    retry_count = 1, 
    fcntl = 0, 
    return_status = 0x0, 
    reading_or_writing = 0 '\000', 
    save_char = 0 '\000', 
    net_skip_rest_factor = 0 '\000', 
    thread_specific_malloc = 0 '\000', 
    compress = 0 '\000', 
    unused3 = 0 '\000', 
    thd = 0x0, 
    last_errno = 0, 
    error = 0 '\000', 
    unused4 = 0 '\000', 
    unused5 = 0 '\000', 
    last_error = '\000' <repeats 511 times>, 
    sqlstate = "00000", 
    extension = 0x0
  }, 
  connector_fd = 0x0, 
  host = 0x5579726d6758 "localhost", 
  user = 0x55797263b8d8 "keadhcp4", 
  passwd = 0x55797263b998 "password", 
  unix_socket = 0x5579726d6768 "/var/run/mysqld/mysqld.sock", 
  server_version = 0x5579726d678e "10.1.26-MariaDB-0+deb9u1", 
  host_info = 0x5579726d6738 "Localhost via UNIX socket", 
  info = 0x0, 
  db = 0x55797263ba58 "keadhcp4", 
  charset = 0x7ff5a0c4f180 <my_charset_latin1>, 
  fields = 0x55797270f650, 
  field_alloc = {
    free = 0x55797270f638, 
    used = 0x0, 
    pre_alloc = 0x0, 
    min_malloc = 32, 
    block_size = 8152, 
    block_num = 5, 
    first_block_usage = 0, 
    error_handler = 0x0
  }, 
  affected_rows = 0, 
  insert_id = 0, 
  extra_info = 0, 
  thread_id = 13, 
  packet_length = 0, 
  port = 0, 
  client_flag = 4104847, 
  server_capabilities = 18446744072103131135, 
  protocol_version = 10, 
  field_count = 18, 
  server_status = 2, 
  server_language = 45, 
  warning_count = 0, 
  options = {
    connect_timeout = 5, 
    read_timeout = 0, 
    write_timeout = 0, 
    port = 0, 
    protocol = 2, 
    client_flag = 128, 
    host = 0x0, 
    user = 0x0, 
    password = 0x0, 
    unix_socket = 0x0, 
    db = 0x0, 
    init_commands = 0x5579726d68f8, 
    my_cnf_file = 0x0, 
    my_cnf_group = 0x0, 
    charset_dir = 0x0, 
    charset_name = 0x55797263b7f8 "latin1", 
    ssl_key = 0x0, 
    ssl_cert = 0x0, 
    ssl_ca = 0x0, 
    ssl_capath = 0x0, 
    ssl_cipher = 0x0, 
    shared_memory_base_name = 0x0, 
    max_allowed_packet = 0, 
    use_ssl = 0 '\000', 
    compress = 0 '\000', 
    named_pipe = 0 '\000', 
    use_thread_specific_memory = 0 '\000', 
    unused2 = 0 '\000', 
    unused3 = 0 '\000', 
    unused4 = 0 '\000', 
    methods_to_use = MYSQL_OPT_GUESS_CONNECTION, 
    client_ip = 0x0, 
    secure_auth = 0 '\000', 
    report_data_truncation = 1 '\001', 
    local_infile_init = 0x0, 
    local_infile_read = 0x0, 
    local_infile_end = 0x0, 
    local_infile_error = 0x0, 
    local_infile_userdata = 0x0, 
    extension = 0x5579726d69d8
  }, 
  status = MYSQL_STATUS_READY, 
  free_me = 1 '\001', 
  reconnect = 1 '\001', 
  scramble = "L~[+`(AOJe<>_Dt>uT&^", 
  unused1 = 0 '\000', 
  unused2 = 0x0, 
  unused3 = 0x0, 
  unused4 = 0x0, 
  unused5 = 0x0, 
  stmts = 0x5579726fd850, 
  methods = 0x7ff5a0c4edc0 <client_methods>, 
  thd = 0x0, 
  unbuffered_fetch_owner = 0x0, 
  info_buffer = 0x0, 
  extension = 0x0
}
(gdb) set print pretty off
(gdb) up
#1  0x00007ff5a39f4d19 in isc::dhcp::MySqlHostDataSourceImpl::getHostCollection 
(this=0x5579726c59b0, 
stindex=isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID, 
bind=0x7ffd6ebfa770, exchange=..., result=std::vector of length 0, capacity 0, 
single=true) at ../../../../src/lib/dhcpsrv/mysql_host_data_source.cc:2262
2262        status = mysql_stmt_bind_result(conn_.statements_[stindex], 
&outbind[0]);
(gdb) print stindex
$12 = isc::dhcp::MySqlHostDataSourceImpl::GET_HOST_SUBID4_DHCPID

(gdb) print/x ((char*)(&stmt->mysql->options) - (char*)(stmt->mysql))
$15 = 0x390
(gdb) print/x (char*)(&stmt->mysql->options.report_data_truncation) - 
(char*)&(stmt->mysql->options)
$16 = 0xc1
(gdb) print/x ((char*)(&stmt->mysql->options) - (char*)(stmt->mysql)) + 
(char*)(&stmt->mysql->options.report_data_truncation) - 
(char*)&(stmt->mysql->options)
$17 = 0x451


(gdb) x/6xb identifier_begin
0x557972673480: 0x00    0x01    0x04    0x1b    0x2c    0x1f

###########



gdb -q --pid $(pidof kea-dhcp4)

set width 0
set pagination off
directory /home/benutzer/kea-dhcp4-server/orig/isc-kea-1.1.0/src/bin/dhcp4/tests
directory /home/benutzer/mariadb-10.1/orig/mariadb-10.1-10.1.26
b isc::dhcp::MySqlHostDataSourceImpl::getHostCollection
cont

b isc::dhcp::MySqlLeaseMgr::addLeaseCommon
b isc::dhcp::HostMgr::get4
b isc::dhcp::Dhcpv4Srv::processPacket

Reply via email to