Hello,
sorry if this has been posted/addressed before, I did not find it in a quick
search of the mailing list logs.
There seems to be a problem ([1], [2]) where creating a p2p interface will
crash wpa_supplicant if the resulting interface name is larger than the limit
of 15 chars.
This did not happen when interface names were usually short (wlan0, wlo0...),
but unfortunately systemd, which is widely used now, creates longer interface
names ([3]).
For me (I opened [2]) and apparently for several other people this results in
a combination that is longer than the limit (f.e.p2p-dev-wlp0s20f3). This
causes wpa_supplicant to segfault.
I believe wpa_supplicant should at least check the interface length, and print
an error message.
In my opinion it should also somehow create an interface name that is small
enough, but I don't know how to best implement this. Maybe a simple truncate,
maybe some suffix to avoid duplicates?
I attached a backtrace , but sadly I cannot extract a lot of information from
it, because the actual segfault seems to be in an unrelated part.
I posted the relevant parts of the dmesg log as well as my system info in [2],
in case this helps.
Best regards,
Malte / iggne
[1]: https://github.com/albfan/miraclecast/issues/285
[2]: https://github.com/benzea/gnome-network-displays/issues/70
[3]: https://www.freedesktop.org/wiki/Software/systemd/
PredictableNetworkInterfaceNames/
Program received signal SIGSEGV, Segmentation fault.
offchannel_pending_action_tx (wpa_s=wpa_s@entry=0x0) at offchannel.c:459
459 offchannel.c: No such file or directory.
(gdb) bt full
#0 offchannel_pending_action_tx (wpa_s=wpa_s@entry=0x0) at offchannel.c:459
No locals.
#1 0x0000558fd2c07b09 in wpas_p2p_clear_pending_action_tx (wpa_s=wpa_s@entry=0x0) at p2p_supplicant.c:6805
No locals.
#2 0x0000558fd2c0dca6 in wpas_p2p_find (wpa_s=0x0, timeout=timeout@entry=30, type=type@entry=P2P_FIND_START_WITH_FULL, num_req_dev_types=num_req_dev_types@entry=0, req_dev_types=req_dev_types@entry=0x0, dev_id=dev_id@entry=0x0, search_delay=0, seek_cnt=0 '\000', seek_string=0x0, freq=0) at p2p_supplicant.c:6827
No locals.
#3 0x0000558fd2d18620 in wpas_dbus_handler_p2p_find (message=0x558fd3d64be0, wpa_s=<optimized out>) at dbus/dbus_new_handlers_p2p.c:149
entry = {type = 0, array_type = 0, key = 0x0, {str_value = 0x0, byte_value = 0 '\000', bool_value = 0, int16_value = 0, uint16_value = 0, int32_value = 0, uint32_value = 0, int64_value = 0, uint64_value = 0, double_value = 0, bytearray_value = 0x0, strarray_value = 0x0, binarray_value = 0x0}, array_len = 0}
reply = 0x0
iter = {dummy1 = 0x558fd3d64be0, dummy2 = 0x7ffc00600000, dummy3 = 108, dummy4 = 0, dummy5 = -740930584, dummy6 = 21903, dummy7 = 141, dummy8 = 0, dummy9 = -740930512, dummy10 = 21903, dummy11 = 0, pad1 = 0, pad2 = 0x7f55e6d75e00, pad3 = 0x0}
iter_dict = {dummy1 = 0x558fd3d64be0, dummy2 = 0x7ffc00600000, dummy3 = 2156, dummy4 = 0, dummy5 = -740930584, dummy6 = 21903, dummy7 = 146, dummy8 = 0, dummy9 = -740930512, dummy10 = 21903, dummy11 = 28, pad1 = 0, pad2 = 0x7f55e6d75c80, pad3 = 0x8}
timeout = 30
type = P2P_FIND_START_WITH_FULL
num_req_dev_types = 0
i = <optimized out>
req_dev_types = 0x0
freq = 0
#4 0x0000558fd2d09bf1 in msg_method_handler (obj_dsc=0x558fd3d941f0, obj_dsc=0x558fd3d941f0, message=0x558fd3d64be0) at dbus/dbus_new_helpers.c:355
method_dsc = 0x558fd2e58bb8 <wpas_dbus_interface_methods+2040>
method = <optimized out>
msg_interface = <optimized out>
method_dsc = <optimized out>
method = <optimized out>
msg_interface = <optimized out>
#5 message_handler (connection=0x558fd3d5f8a0, message=0x558fd3d64be0, user_data=0x558fd3d941f0) at dbus/dbus_new_helpers.c:411
obj_dsc = 0x558fd3d941f0
method = <optimized out>
path = <optimized out>
msg_interface = <optimized out>
reply = <optimized out>
#6 0x00007f55e6d4bc8d in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3
No symbol table info available.
#7 0x00007f55e6d3c7e4 in dbus_connection_dispatch () from /lib/x86_64-linux-gnu/libdbus-1.so.3
No symbol table info available.
#8 0x0000558fd2d16b78 in dispatch_data (con=0x558fd3d5f8a0) at dbus/dbus_common.c:37
No locals.
#9 0x0000558fd2d17008 in process_watch (priv=0x558fd3d5e9a0, priv=0x558fd3d5e9a0, type=EVENT_TYPE_READ, watch=0x558fd3d5f290) at dbus/dbus_common.c:73
No locals.
#10 process_watch_read (sock=<optimized out>, eloop_ctx=0x558fd3d5e9a0, sock_ctx=0x558fd3d5f290) at dbus/dbus_common.c:89
No locals.
#11 0x0000558fd2bd0e2f in eloop_sock_table_dispatch (table=table@entry=0x558fd2e5dd88 <eloop+8>, fds=fds@entry=0x558fd3d67120) at ../src/utils/eloop.c:600
i = 0
#12 0x0000558fd2bd1881 in eloop_sock_table_dispatch (fds=0x558fd3d67120, table=0x558fd2e5dd88 <eloop+8>) at ../src/utils/eloop.c:1223
i = <optimized out>
__d = <optimized out>
#13 eloop_run () at ../src/utils/eloop.c:1223
timeout = <optimized out>
rfds = 0x558fd3d67120
wfds = 0x558fd3d671b0
efds = 0x558fd3d67240
_tv = {tv_sec = 0, tv_usec = 269169}
res = 1
tv = <optimized out>
now = {sec = 94332, usec = 813566}
#14 0x0000558fd2d34273 in wpa_supplicant_run (global=0x558fd3d5e780) at wpa_supplicant.c:6533
wpa_s = <optimized out>
#15 0x0000558fd2bbcbea in main (argc=<optimized out>, argv=<optimized out>) at main.c:392
c = <optimized out>
i = <optimized out>
ifaces = 0x558fd3d5d850
iface = 0x558fd3d5d850
iface_count = 1
exitcode = <optimized out>
params = {daemonize = 0, wait_for_monitor = 0, pid_file = 0x0, wpa_debug_level = 3, wpa_debug_show_keys = 0, wpa_debug_timestamp = 0, ctrl_interface = 0x0, ctrl_interface_group = 0x0, dbus_ctrl_interface = 1, wpa_debug_file_path = 0x0, wpa_debug_syslog = 1, wpa_debug_tracing = 0, override_driver = 0x0, override_ctrl_interface = 0x7ffc052a8f22 "/run/wpa_supplicant", entropy_file = 0x0, conf_p2p_dev = 0x0}
global = 0x558fd3d5e780
_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap