BIND 10 #3047: Use of Kea memfile lease database causes SigAbrt exception
BIND 10 Development
do-not-reply at isc.org
Tue Jul 9 14:08:25 UTC 2013
#3047: Use of Kea memfile lease database causes SigAbrt exception
---------------------------------------+----------------------------------
Reporter: jwright | Owner:
Type: defect | Status: new
Priority: medium | Milestone: New Tasks
Component: dhcp4 | Keywords:
CVSS Scoring: | Sensitive: 0
Defect Severity: Medium | Sub-Project: DNS
Feature Depending on Ticket: | Estimated Difficulty: 0
Add Hours to Ticket: 0 | Total Hours: 0
Internal?: 0 |
---------------------------------------+----------------------------------
Please see following Jabber chat log:
1:38:20 PM jeff: Have you guys seen this in the BIND10 logfile?
2013-07-03 18:54:10.109 ERROR [b10-init.init/5090] BIND10_COMPONENT_FAILED
component b10-dhcp4 (pid 5677) failed: process terminated with exit status
6 (killed by signal 6: SIGABRT)
It seems to occur every once in a while.
1:52:10 PM jeff: I think debian 6 is dead.
1:52:11 PM jeff: 149.20.57.86
1:52:33 PM jeff: No answer to pings from inside lab; and all established
SSH sessions are unresponsive.
1:55:46 PM TomM: Time to pull back and nuke the planet.
1:59:46 PM jeff: I have to way to remote-boot that puppy. I think TomM's
latest Kea checkin caused a kernel panic.
2:00:23 PM TomM: let's see, I know I have the GPS coords for Jeff's new
place.... where did I write those down....
2:01:40 PM TomM: Jeff, if you hear a high pitched whine soon, please
ignore it... it's nothing
2:02:48 PM jeff: Actually, I *DID* have a way to reboot it and I did so.
Thanks, Remote Desktop Client for Mac!
2:24:23 PM tomek: Kea doing SIGABRT may be a problem.
2:24:32 PM tomek: I have never seen this before.
2:44:43 PM jeff: I think I would like to file a bug ticket against this
issue if it reoccurs.
2:45:09 PM jeff: Yes, it continues:
2:45:10 PM jeff: >::reference boost::shared_ptr< <template-parameter-1-1>
>::operator*() const [with T = isc::dhcp::ClientId]: Assertion `px != 0'
failed.
2013-07-03 20:08:11.872 ERROR [b10-init.init/2000] BIND10_COMPONENT_FAILED
component b10-dhcp4 (pid 2007) failed: process terminated with exit status
6 (killed by signal 6: SIGABRT)
with T = isc::dhcp::ClientId]: Assertion `px != 0' failed.
2013-07-03 20:13:27.035 ERROR [b10-init.init/2000] BIND10_COMPONENT_FAILED
component b10-dhcp4 (pid 2143) failed: process terminated with exit status
6 (killed by signal 6: SIGABRT)
with T = isc::dhcp::ClientId]: Assertion `px != 0' failed.
2013-07-03 20:20:06.906 ERROR [b10-init.init/2000] BIND10_COMPONENT_FAILED
component b10-dhcp4 (pid 2146) failed: process terminated with exit status
6 (killed by signal 6: SIGABRT)
2:53:43 PM TomM: looks like there's still a condition that allows a null
client id
2:54:26 PM TomM: tomek you are fibbing when you say you have never seen
this before ;)
2:55:45 PM jeff: Twice now the debian6 server has hung
2:55:59 PM jeff: I think this might be my first "real" bug find. :-)
2:56:18 PM jeff: What kind of info should I be gathering now to help us
diagnose this?
2:58:42 PM tomek: The configuration used and traffic capture of a packet
(or packets) that cause this.
3:00:34 PM marcin: I recall that the issues with NULL client id are still
present when using Memfile backend.
3:00:50 PM marcin: When using MySQL it shouldn't be the case.
3:01:46 PM marcin: Do you actually use MySQL? when hitting assertion
failure?
3:09:11 PM jeff: I do have the build configuired for mySQL backend
3:09:35 PM jeff: I am not even sending DHCP traffic so it's not ANVL
packets…although it might be other random packet traffic.
3:10:06 PM jeff: How do you want me to capture the config? Show bindctl
commands? Dump bind10-cfg.db?
3:10:27 PM jeff: Would any syslogs be helpful?
3:10:31 PM TomM: if I recall, Jeff, there are Windows machines that
periodically make IPv4 requests on on the DHCP lab setup
3:10:56 PM jeff: Those Windows clients are disabled
3:11:20 PM TomM: curious
3:11:51 PM jeff: Well, I *THINK* those are disabled. Let me show you a
screenie.
3:12:16 PM TomM: hey I don't want to see you screenie! put that thing
away!
3:12:25 PM marcin: I doubt that you can hit this error without traffic at
all
3:12:26 PM jeff: Just one peek TomM
3:12:36 PM TomM: GAGGHH!! RUN AWAY!
3:12:37 PM jeff: (being sent in jabber file xfer now)
3:13:15 PM jeff: If there is an alternative place to xfer files let me
know
tomek left the room. (3:14:17 PM)
3:14:27 PM TomM: just sez I have one event....
3:14:36 PM TomM: I use Psi for client
3:14:59 PM TomM: nevermind, I got it
3:15:39 PM TomM: no I didn't
3:15:45 PM TomM: error'd out
3:19:37 PM jeff: Yeah it erroed out.
3:19:39 PM jeff: Let me try again
3:21:11 PM jeff: OK well that's a big waste of time
3:21:15 PM jeff: I'll email it to you
3:21:19 PM TomM: yep
3:21:46 PM TomM: what would be better would the the bind10 log output
3:21:55 PM jeff: What else?
3:22:05 PM jeff: Here is how I confogured everything:
3:22:28 PM TomM: you could include the config db
3:22:32 PM jeff: https://confluence-int.isc.org/display/QUAL/DHCP+Testing
3:22:49 PM jeff: I'm going to enter a bug ticket and include the logfiles
from dhcpsrv and dhcp4
3:22:57 PM jeff: as well as the bind10 config db
3:23:34 PM marcin: Which machine is it?
3:23:40 PM marcin: debian6?
3:25:39 PM jeff: debian6-64-1-dhcp
3:25:52 PM jeff: (149.20.57.86)
3:25:54 PM marcin: Where is the bind installed?
3:26:10 PM jeff: /home/test/var/test-anvl
3:26:27 PM jeff: I just had to reboot the VM because it was not responding
to ICMP Requests
3:26:28 PM marcin: ok, let me login and have a quick look on the
configuration.
3:26:54 PM jeff: BIND10 is not running after reboot.
3:27:09 PM marcin: I will kick it of
3:27:54 PM jeff: cmd line:
3:28:12 PM jeff: sudo /home/test/var/test-anvl/sbin/bind10 &>
/home/test/var/test-anvl/bind10.log
3:30:43 PM marcin: MySQL is not configured
3:31:00 PM jeff: Not true. I built as follows:
3:31:12 PM marcin: It is true according to bindctl
3:31:21 PM marcin: Building is one thing
3:31:26 PM jeff: sudo /home/test/var/test-anvl/sbin/bind10 &>
/home/test/var/test-anvl/bind10.log
3:31:32 PM marcin: configuration is another thing
3:31:59 PM TomM: if someone could review 3030, it correct the build issue
3:32:02 PM marcin: Dhcp4/lease-database/type "" string (default)
3:32:05 PM TomM: its quite small
3:32:16 PM TomM: good catch, marcin
3:32:47 PM marcin: other things are name, user, password, host
3:33:10 PM marcin: they also have to be set to credentials you have added
to MySQL
3:33:30 PM TomM: rtfm
3:33:40 PM TomM: ;)
3:34:16 PM marcin: I could add it now, but it will be better for you to do
it to keep an eye on what is going on in your config
3:34:50 PM marcin: I now stopped bind and logged off
3:35:58 PM marcin: Tom, in the course of #2977 I found a little issue with
d_controller_unittests
3:36:27 PM TomM: is this the logger init thing?
3:36:32 PM marcin: yes
3:37:05 PM TomM: what precisely is the issue?
3:37:27 PM TomM: you know I stole that line from DHCP4/DHCP6....
3:37:39 PM marcin: yes and now
3:37:47 PM marcin: DHCP4 doesn't test main()
3:37:52 PM TomM: ah
3:38:08 PM marcin: D2 tests launch function which does
initLogger(blablabla)
3:38:14 PM TomM: right
3:38:15 PM marcin: This should not happen
3:38:25 PM TomM: what should not happen?
3:38:44 PM TomM: initLogger should not be called?
3:38:51 PM marcin: initLogger(...) should not be called when running unit
tests
3:39:04 PM marcin: it shouldn't be called in launch()
3:39:14 PM marcin: because it is already called in main() of unit tests
3:39:23 PM TomM: OH
3:39:26 PM marcin: in a way that it should be run for unit tests
3:39:32 PM marcin: (without any arguments)
3:40:01 PM marcin: But, if I remove initLogger in launch I hit worse
problem
3:40:10 PM TomM: then I will need to add a command line argument that
skips it
3:40:11 PM marcin: crash in commandHandler
3:41:06 PM marcin: commandHandler has this second argument called "args"
3:41:15 PM TomM: right
3:41:17 PM marcin: which seems to be NULL
3:41:32 PM TomM: let me look at the code
3:42:23 PM marcin: The rest is a speculation so far...
3:42:37 PM TomM: let me catch up
3:42:41 PM marcin: genShutdownCommand in unit tests is responsible for
this
3:42:59 PM jeff: Hold on guys - talking with my attorney - brb
3:43:01 PM marcin: sorry, genShutdownCallback
3:43:19 PM TomM: oh, because args isn't being checked before being handed
to the log statement
3:43:37 PM marcin: well, getShutdownCallback passes empty argyment
3:43:45 PM marcin: NULL argument I should say
3:43:50 PM marcin: arg_set
3:43:55 PM TomM: if it passed in an empty ELementPtr it would run fine
3:44:22 PM marcin: isc::data::ElementPtr arg_set;
3:44:27 PM marcin: makes arg_set NULL
3:44:47 PM marcin: and in the handler you do arg_set->str()
3:44:55 PM TomM: right
3:44:57 PM marcin: the -> operator causes assertion
3:45:11 PM TomM: yes, the log statement should test it
3:45:18 PM TomM: and adjust accordingly
3:45:42 PM marcin: I am wondering what will be the most elegant solution
3:45:42 PM TomM: (arg_set ? arg_set->str() : "no args")
3:46:02 PM marcin: yes, maybe that should be done
3:46:06 PM TomM: yes
3:46:10 PM TomM: it should be
3:46:16 PM marcin: and maybe we need to identify some more places like
this
3:46:23 PM TomM: perhaps
3:46:34 PM marcin: I can do it together with 27977
3:46:37 PM TomM: tyring to figure out why I haven't hit this before
3:46:38 PM marcin: sorry 2977
3:47:06 PM marcin: Well, initialization of the logger has something to do
with it, but I don't know why
3:47:19 PM marcin: and I don't know if I will find today :-)
3:47:38 PM marcin: s/find/find out
stephen left the room. (3:47:57 PM)
3:48:00 PM TomM: launch calls the init logger but launch is the first
place the command line arguments are examined...
3:48:08 PM TomM: which is as it should be
3:48:19 PM TomM: s/but/because/
3:48:42 PM TomM: I did not want app specific things to be in main()
3:48:47 PM marcin: it would be ok if we added an extra argument to launch
3:48:59 PM TomM: yes
3:48:59 PM marcin: this argument would indicate that you're running in the
test mode
3:49:12 PM marcin: and it would be used by unit tests only
3:49:15 PM TomM: yes
3:49:21 PM marcin: it could have a default value = false
3:49:25 PM TomM: it could default to false
3:49:27 PM TomM: lol
3:49:29 PM marcin: but it doesn't have to
3:49:48 PM TomM: in this case I would say it should because it is a test
time only thing
3:50:12 PM TomM: might be handy for other things too...
3:50:15 PM marcin: yes, I agree but I don't know if you like defaults :P
3:50:24 PM TomM: case by case basis
3:50:42 PM marcin: in this case, let me fix it
3:50:54 PM marcin: as we just discussed it
3:51:11 PM TomM: ok
3:51:24 PM marcin: It will be added together with #2977
3:51:25 PM jeff: SO (and sorry for being absent) - this is a known issue?
3:51:33 PM marcin: which one?
3:51:35 PM jeff: I have not yet entered a new ticket
3:51:40 PM jeff: My shutdown
3:51:50 PM marcin: your shutdown is a known issue for me
3:51:53 PM jeff: The error message in BIND10 log
3:52:01 PM marcin: I am not sure if there is any ticket yet
3:52:19 PM jeff: I would be happy to put one in, or if you prefer, you can
do it
3:52:30 PM TomM: the null client id "crash" is known and we had a ticket
but as marcin pointed out it addressed MySQL only
3:52:37 PM jeff: BTW I love talking to attorneys on the phone for $380.00
per hour.
3:53:12 PM jeff: SO clue me in - even though I specified --mysql in the
config, and I created the SQL "qa" database to use...
3:53:14 PM TomM: look if you have nothing better to do with your time and
money, I'll talk to you and I only charge you $300 an hour
3:53:17 PM jeff: I'm not using SQL?
3:53:37 PM TomM: you have to set the database type
3:53:43 PM marcin: you're not using SQL and you should
3:53:56 PM TomM: in the bind10 config
3:53:56 PM marcin: otherwise you will loose your leases when server is off
3:53:58 PM marcin: :P
3:54:02 PM jeff: COuld you point me to the part of the user guide that
says how to do that please
3:54:03 PM TomM: its right there in the manual
3:54:08 PM jeff: What section
3:54:13 PM TomM: 1 sec
3:54:30 PM jeff: I read it last night at 1130pm and I do admit it was very
interesting.
3:54:31 PM jeff: Not.
3:55:10 PM TomM: 17.2.1 Database Configuration
3:55:15 PM marcin:
http://bind10.isc.org/docs/bind10-guide.html#idm66502448
3:55:18 PM marcin: enjoy!
3:55:46 PM jeff: I found it
3:55:52 PM jeff: > config set Dhcp4/lease-database/type "mysql"
3:55:56 PM jeff: From Section 17
3:56:03 PM TomM: that'll $450.00 ... I'll send you a bill
3:56:31 PM jeff: Bill it to "Kea QA"
3:56:32 PM marcin: apart from setting a type of the database, you will
have to setup user, password, host
3:56:46 PM jeff: Sorry I missed that part
3:56:55 PM jeff: Let me make absolutely certain:
3:57:11 PM TomM: were you reading it or just looking at the pretty
pictures?
3:57:13 PM jeff: I am NOT going to enter a ticket, either for the error
message in the log, or for the assert (debian reboot)
3:57:15 PM jeff: OK??
3:57:45 PM jeff: At 1130pm I think I read "SQL" and said to myself "I
already did that, man."
3:57:45 PM marcin: IMHO, you shouldn't
3:58:05 PM jeff: OK then I will add the SQL config to my instructions on
the COnfluence page, and retry.
3:58:16 PM jeff: THanks you for your time, gentlemen.
3:58:21 PM jeff: Oh, and TomM too.
3:58:48 PM marcin: nop
3:58:59 PM TomM: you betcha!
3:59:07 PM TomM: next time RTFM
3:59:08 PM TomM: lol
3:59:57 PM jeff: I guess in my case, I need to RTFM several times for
comprehension.
4:00:27 PM TomM: or do your beer drinking after not during
4:00:42 PM TomM: lol
4:00:53 PM TomM: speaking of beer.... I need a beer
4:01:10 PM TomM: all this broken build chasing has left me thirsty
4:02:50 PM TomM: marcin, are you going to work much longer or are you
thru?
4:03:13 PM marcin: What do you need? :P
4:03:15 PM marcin: a review?
4:03:27 PM TomM: well I was thinking you could look over 3030
4:03:38 PM TomM: its quite small and fixes the build break
4:03:41 PM marcin: let me check how many kilo-lines of code
4:03:53 PM TomM: however, I know it is quite late for you
4:04:26 PM TomM: and I can recruit someone from bind10 perhaps
4:05:52 PM TomM: its a follow on to 3007
4:06:23 PM marcin: Do we really want #if 0?
4:06:32 PM TomM: crap where is that?
4:06:39 PM TomM: must have missed one
4:06:39 PM marcin: ncr_msg.cc
4:06:43 PM TomM: damnit
4:06:44 PM marcin: a couple
4:07:36 PM TomM: no, of course we do not want them
4:07:41 PM TomM: Jeff distracted me
4:08:05 PM marcin: Oh we have time utils in bind10
4:08:08 PM marcin: nice :-)
4:08:54 PM TomM: yes we do
4:09:23 PM TomM: after you pointed out the wisdom of using such things...
I went looking for it
4:10:23 PM marcin: hehe, as long as it doesn't affect performance too
heavily
4:10:48 PM TomM: oh, it will be slower than honey flowing uphill in Gdansk
in January
4:11:03 PM TomM: ;)
4:11:06 PM marcin: :-)
4:11:40 PM TomM: normally we would say "molasses" but I didn't figure
you'd know what that is...
4:12:34 PM TomM: I have removed the #if 0s and it still runs/passes unit
tests... have not checked that in yet
4:13:37 PM marcin: otherwise it is ok
4:13:45 PM marcin: I can make a comment in the ticket
4:13:58 PM TomM: thank you very much
4:17:18 PM marcin: done
4:17:25 PM marcin: anything else sir?
4:17:39 PM TomM: no, sir
4:18:27 PM marcin: ok, in this case I think I need to go now and do
outstaning houseworks
4:18:58 PM TomM: i'd go have a beer if I were you
4:19:13 PM marcin: Usually, this is what I do
4:19:27 PM marcin: but this week, my wife has "angina"
4:19:38 PM marcin: and she is in bed since Sunday
4:19:54 PM marcin: I am pretty much doing everything nowadays
4:20:46 PM TomM: ah, well I hope she feels better soon!
4:20:55 PM TomM: and you need to make sure you get rest too
4:20:59 PM marcin: Yes, me too, otherwise I will get crazy
4:21:10 PM TomM: crazIER
4:21:14 PM marcin: Working and taking care of kids and shopping
4:21:20 PM TomM: yep
4:21:20 PM marcin: in the same time
4:21:27 PM TomM: that will make you nuts
4:21:56 PM marcin: that's also pretty much why I stay so late working
4:22:03 PM marcin: I can finally focus
4:22:06 PM marcin: :P
4:22:10 PM TomM: ah
4:22:34 PM marcin: but it has pitfalls too
4:22:52 PM marcin: If I go to sleep at 1AM I will be woken up by kids at
6AM anyway
4:23:04 PM TomM: lovely, isn't it?
4:23:05 PM marcin: that's what happend yesterday
4:23:15 PM marcin: :-)
4:23:32 PM marcin: anyways, good night gentlemen
4:23:39 PM TomM: good night!
--
Ticket URL: <https://bind10.isc.org/ticket/3047>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list