[systemd-devel] failed assertion in systemd-networkd

Tom Gundersen teg at jklm.no
Sun Dec 7 04:05:03 PST 2014


On Sat, Dec 6, 2014 at 8:10 PM, Dave Reisner <d at falconindy.com> wrote:
> On Sat, Dec 06, 2014 at 01:46:23PM -0500, Dave Reisner wrote:
>> Hi,
>>
>> With the latest pull from git, I'm seeing a failed assertion in
>> systemd-networkd:
>>
>> Assertion 's' failed at src/shared/util.c:413, function safe_atou8().  Aborting.
>>
>> The problematic .network file is simply:
>>
>>   [Match]
>>   Name=eth0
>>
>>   [Network]
>>   DHCP=v4
>>
>> The backtrace points here:
>>
>> http://cgit.freedesktop.org/systemd/systemd/tree/src/network/networkd-network.c#n233
>>
>> Where I suppose that:
>>
>>   udev_device_get_sysattr_value(device, "name_assign_type");
>>
>> is returning NULL. The file exists, but any attempts to read it results
>> in a 0 byte read and an EINVAL errno. Removing the [Match] section from
>> the .network file avoids the failed assertion.
>>
>> Is this a kernel bug? Shouldn't this file be returning one of the enums
>> values like NET_NAME_PREDICTABLE or NET_NAME_USER? This holds true on
>> both a VM (using the virtio-net module), and also on my desktop (using
>> the sky2 module).
>
> Ah, I see:
>
> https://github.com/torvalds/linux/blob/master/net/core/net-sysfs.c#L120
>
> If dev->name_assign_type == NET_NAME_UNKNOWN, reading name_assign_type
> errors with -EINVAL. Tom, why is this intentionally hidden from
> userspace?
>
> https://github.com/torvalds/linux/blob/master/include/uapi/linux/netdevice.h#L41

So that we can change it into some other NET_NAME_* value in the
future without "breaking userspace". It is (apparently) ok to change
from returning an error into returning some value, but not ok to
change the value you return.

Cheers,

Tom


More information about the systemd-devel mailing list