<div dir="ltr"><div>Hello,<br><br>Before filing a bug report, I wanted to run this by the group to make sure I'm not doing something dumb (it happens).  We're seeing systemd-journald crash with:<br><br>Assertion 'n + 20 + (object_pid ? 11 : 0) <= m' failed at /build/amd64-usr/var/tmp/portage/sys-apps/systemd-218-r5/work/systemd-218/src/journal/journald-server.c:576, function dispatch_message_real(). Aborting.<br><br></div>Shortly after this occurs, the container crashes.  We cause this by creating journal entries with some very specific numbers of metadata fields.  22, 66, 154, 330 to be exact.  Any other number of fields, no problem, no crash.  Crazy, right?  The examples at the bottom of this message reliably produce a crash.<br><div><div><br>PLEASE let me know if I've missed something obvious, but as far as I can tell, this is a bug in systemd-journald.  We've seen this exact failure mode with Erlang, Ruby, and Python.<br></div><div><br>Environment details:<br><br>- CoreOS version 607.0.0<br>- systemd version 218<br>- Docker container based on: phusion/baseimage:0.9.11<br>- Languages/APIs: Erlang (ejournald), Ruby (journald-native), Python (python-systemd)<br><br>Easy one-liners to reproduce:<br><br>## Python<br><br>$ apt-get update && apt-get -y install python-systemd && python << EOF<br>from systemd import journal<br>journal.sendv('MESSAGE=this will crash', 'SYSLOG_IDENTIFIER=foobar', 'SYSLOG_FACILITY=3', 'PRIORITY=5', 'KEY5=foobar', 'KEY6=foobar', 'KEY7=foobar', 'KEY8=foobar', 'KEY9=foobar', 'KEY10=foobar', 'KEY11=foobar', 'KEY12=foobar', 'KEY13=foobar', 'KEY14=foobar', 'KEY15=foobar', 'KEY16=foobar', 'KEY17=foobar', 'KEY18=foobar', 'KEY19=foobar', 'KEY20=foobar', 'KEY21=foobar', 'KEY22=foobar')<br>EOF<br><br>$ apt-get update && apt-get -y install python-systemd && python << EOF<br>from systemd import journal<br>journal.sendv('MESSAGE=this will crash', 'SYSLOG_IDENTIFIER=foobar', 'SYSLOG_FACILITY=3', 'PRIORITY=5', 'KEY5=foobar', 'KEY6=foobar', 'KEY7=foobar', 'KEY8=foobar', 'KEY9=foobar', 'KEY10=foobar', 'KEY11=foobar', 'KEY12=foobar', 'KEY13=foobar', 'KEY14=foobar', 'KEY15=foobar', 'KEY16=foobar', 'KEY17=foobar', 'KEY18=foobar', 'KEY19=foobar', 'KEY20=foobar', 'KEY21=foobar', 'KEY22=foobar', 'KEY23=foobar', 'KEY24=foobar', 'KEY25=foobar', 'KEY26=foobar', 'KEY27=foobar', 'KEY28=foobar', 'KEY29=foobar', 'KEY30=foobar', 'KEY31=foobar', 'KEY32=foobar', 'KEY33=foobar', 'KEY34=foobar', 'KEY35=foobar', 'KEY36=foobar', 'KEY37=foobar', 'KEY38=foobar', 'KEY39=foobar', 'KEY40=foobar', 'KEY41=foobar', 'KEY42=foobar', 'KEY43=foobar', 'KEY44=foobar', 'KEY45=foobar', 'KEY46=foobar', 'KEY47=foobar', 'KEY48=foobar', 'KEY49=foobar', 'KEY50=foobar', 'KEY51=foobar', 'KEY52=foobar', 'KEY53=foobar', 'KEY54=foobar', 'KEY55=foobar', 'KEY56=foobar', 'KEY57=foobar', 'KEY58=foobar', 'KEY59=foobar', 'KEY60=foobar', 'KEY61=foobar', 'KEY62=foobar', 'KEY63=foobar', 'KEY64=foobar', 'KEY65=foobar', 'KEY66=foobar')<br>EOF<br><br>## Ruby<br><br>$ apt-get update && apt-get -y install make libsystemd-journal-dev ruby ruby-dev && gem install journald-native && ruby << EOF<br>require 'journald/native'<br>Journald::Native.send "MESSAGE=this will crash", "SYSLOG_IDENTIFIER=foobar", "SYSLOG_FACILITY=3", "PRIORITY=5", "KEY5=foobar", "KEY6=foobar", "KEY7=foobar", "KEY8=foobar", "KEY9=foobar", "KEY10=foobar", "KEY11=foobar", "KEY12=foobar", "KEY13=foobar", "KEY14=foobar", "KEY15=foobar", "KEY16=foobar", "KEY17=foobar", "KEY18=foobar", "KEY19=foobar", "KEY20=foobar", "KEY21=foobar", "KEY22=foobar"<br>EOF<br><br>$ apt-get update && apt-get -y install make libsystemd-journal-dev ruby ruby-dev && gem install journald-native && ruby << EOF<br>require 'journald/native'<br>Journald::Native.send "MESSAGE=this will crash", "SYSLOG_IDENTIFIER=foobar", "SYSLOG_FACILITY=3", "PRIORITY=5", "KEY5=foobar", "KEY6=foobar", "KEY7=foobar", "KEY8=foobar", "KEY9=foobar", "KEY10=foobar", "KEY11=foobar", "KEY12=foobar", "KEY13=foobar", "KEY14=foobar", "KEY15=foobar", "KEY16=foobar", "KEY17=foobar", "KEY18=foobar", "KEY19=foobar", "KEY20=foobar", "KEY21=foobar", "KEY22=foobar", "KEY23=foobar", "KEY24=foobar", "KEY25=foobar", "KEY26=foobar", "KEY27=foobar", "KEY28=foobar", "KEY29=foobar", "KEY30=foobar", "KEY31=foobar", "KEY32=foobar", "KEY33=foobar", "KEY34=foobar", "KEY35=foobar", "KEY36=foobar", "KEY37=foobar", "KEY38=foobar", "KEY39=foobar", "KEY40=foobar", "KEY41=foobar", "KEY42=foobar", "KEY43=foobar", "KEY44=foobar", "KEY45=foobar", "KEY46=foobar", "KEY47=foobar", "KEY48=foobar", "KEY49=foobar", "KEY50=foobar", "KEY51=foobar", "KEY52=foobar", "KEY53=foobar", "KEY54=foobar", "KEY55=foobar", "KEY56=foobar", "KEY57=foobar", "KEY58=foobar", "KEY59=foobar", "KEY60=foobar", "KEY61=foobar", "KEY62=foobar", "KEY63=foobar", "KEY64=foobar", "KEY65=foobar", "KEY66=foobar"<br>EOF<br><br></div><div>Thanks in advance!<br><br></div><div>Dan Checkoway<br></div></div></div>