diff mbox series

Segmentation fault in the mesh/node.c

Message ID 116e6cc1-5a49-a833-689b-4f00880e455b@silvair.com
State New
Headers show
Series Segmentation fault in the mesh/node.c | expand

Commit Message

Przemysław Fierek June 7, 2020, 1:34 p.m. UTC
Hi,


After rebase on the latest BlueZ version our functional tests failed on 
SEGV in the `node.c` file. Seems that call two D-Bus functions `join` 
and `leave` one after the other (before receive `join_complete`) causes 
SEGV.

In the attached files there is the backtrace and the diff with my 
changes (adds extra some logs).


Best regards,

Przemysław Fierek
11:58:15  =================================== FAILURES ===================================
11:58:15  _______________________ test_remove_storage_after_leave ________________________
11:58:15  
11:58:15  application = <bluez_tests.fixtures.application.<locals>._Application object at 0x7f0cf3fb1050>
11:58:15  meshd = <bluez_tests.daemon.Daemon object at 0x7f0cf4125710>
11:58:15  node_storage = <class 'bluez_tests.fixtures.node_storage.<locals>.NodeStorage'>
11:58:15  
11:58:15      async def test_remove_storage_after_leave(application, meshd, node_storage):
11:58:15          await application.import_node()
11:58:15      
11:58:15          assert application.token_ring.token
11:58:15      
11:58:15          with node_storage() as storage, node_storage(backup=True) as backup:
11:58:15              assert storage["token"] == application.token_ring.token
11:58:15              assert backup["token"] == application.token_ring.token
11:58:15      
11:58:15  >       await application.leave()
11:58:15  
11:58:15  bluez_tests/test_storage.py:230: 
11:58:15  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
11:58:15  /usr/local/lib/python3.7/dist-packages/bluetooth_mesh/application.py:721: in leave
11:58:15      await self.network_interface.leave(self.token_ring.token)
11:58:15  /usr/local/lib/python3.7/dist-packages/bluetooth_mesh/interfaces.py:309: in leave
11:58:15      await self._interface.call_leave(token)
11:58:15  /usr/local/lib/python3.7/dist-packages/dbus_next/aio/proxy_object.py:79: in method_fn
11:58:15      BaseProxyInterface._check_method_return(msg, intr_method.out_signature)
11:58:15  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
11:58:15  
11:58:15  msg = <dbus_next.message.Message object at 0x7f0cf41a8fd0>, signature = ''
11:58:15  
11:58:15      @staticmethod
11:58:15      def _check_method_return(msg, signature=None):
11:58:15          if msg.message_type == MessageType.ERROR:
11:58:15  >           raise DBusError._from_message(msg)
11:58:15  E           dbus_next.errors.DBusError: Message recipient disconnected from message bus without replying
11:58:15  
11:58:15  /usr/local/lib/python3.7/dist-packages/dbus_next/proxy_object.py:59: DBusError
11:58:15  ------------------------------ Captured log setup ------------------------------
11:58:15  09:58:06.319 asyncio              DEBUG Using selector: EpollSelector
11:58:15  09:58:06.393 MESHD                 INFO Starting: ['gosu', 'root', 'env', 'SEGFAULT_SIGNALS=abrt segv fpe', 'LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so', '/usr/libexec/bluetooth/bluetooth-meshd', '--config=/tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config', '--io=tcpserver:65254', '--debug']
11:58:15  09:58:06.402 MESHD.stderr          INFO 2020-06-05 09:58:06.399       main.c:126  ready_callback             D-Bus ready
11:58:15  09:58:06.402 MESHD.stderr          INFO 2020-06-05 09:58:06.399       main.c:107  request_name_callback      Request name success
11:58:15  09:58:06.402 MESHD.stderr          INFO 2020-06-05 09:58:06.399       mesh.c:276  mesh_init                  Loading node configuration from /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config
11:58:15  09:58:06.403 MESHD                 INFO Started
11:58:15  09:58:06.406 APPLICATION           INFO Elements: {}
11:58:15  09:58:06.407 APPLICATION          DEBUG Connecting to D-Bus
11:58:15  09:58:06.409 MESHD.stderr          INFO 2020-06-05 09:58:06.403 mesh-io-tcpserver.c:435  tls_ctx_init               TLS initialization: done
11:58:15  09:58:06.409 MESHD.stderr          INFO 2020-06-05 09:58:06.403 mesh-io-tcpserver.c:234  get_fd_info                Server bind -> addr:0.0.0.0 port:65254 fd:6
11:58:15  09:58:06.409 MESHD.stderr          INFO 2020-06-05 09:58:06.403 mesh-io-tcpserver.c:580  tcpserver_io_init          Started mesh on tcp port 65254
11:58:15  09:58:06.409 MESHD.stderr          INFO 2020-06-05 09:58:06.403       mesh.c:296  mesh_init                  mesh/mesh.c:mesh_init() io 0x56413d49e9c0
11:58:15  09:58:06.410 MESHD.stderr          INFO 2020-06-05 09:58:06.404       mesh.c:881  mesh_dbus_init             Added Network Interface on /org/bluez/mesh
11:58:15  09:58:06.418 APPLICATION           INFO Connecting to org.bluez.mesh
11:58:15  09:58:06.425 APPLICATION           INFO Registering application
11:58:15  ------------------------------ Captured log call -------------------------------
11:58:15  09:58:06.434 APPLICATION         WARNING Import 83bf3b46-8103-45a2-8bcc-e70d8d0b46d3
11:58:15  09:58:06.436 MESHD.stderr          INFO 2020-06-05 09:58:06.435       mesh.c:778  import_call                mesh/mesh.c:import_call() Import local node request
11:58:15  09:58:06.437 MESHD.stderr          INFO 2020-06-05 09:58:06.435       node.c:1720 node_import                mesh/node.c:node_import()
11:58:15  09:58:06.437 MESHD.stderr          INFO 2020-06-05 09:58:06.435       node.c:267  node_new                   new elements: 0x56413d4ca930
11:58:15  09:58:06.438 MESHD.stderr          INFO 2020-06-05 09:58:06.438       node.c:1283 get_app_properties         mesh/node.c:get_app_properties() path /com/silvair/application
11:58:15  09:58:06.438 MESHD.stderr          INFO 2020-06-05 09:58:06.438       node.c:1129 get_element_properties     mesh/node.c:get_element_properties() path /com/silvair/application/element0
11:58:15  09:58:06.439 MESHD.stderr          INFO 2020-06-05 09:58:06.438       node.c:1214 convert_node_to_storage    db_node->elements 0x56413d4c9840
11:58:15  09:58:06.440 MESHD.stderr          INFO 2020-06-05 09:58:06.438 mesh-config-json.c:1706 mesh_config_create         mesh/mesh-config-json.c:mesh_config_create() New node config /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3/node.json
11:58:15  09:58:06.450 MESHD.stderr          INFO 2020-06-05 09:58:06.450   net-keys.c:493  net_key_beacon_refresh     mesh/net-keys.c:net_key_beacon_refresh() Setting SNB: IVI: 00000000, IVU: 0, KR: 0
11:58:15  09:58:06.451 MESHD.stderr          INFO 2020-06-05 09:58:06.450       util.c:52   print_packet               mesh/util.c:print_packet() 51086.450 Set SNB Beacon to: 2b01003ecaff672f67337000000000a502cffc80248d4c
11:58:15  09:58:06.451 MESHD.stderr          INFO 2020-06-05 09:58:06.450 mesh-config-json.c:565  mesh_config_net_key_add    mesh/mesh-config-json.c:mesh_config_net_key_add() netKey 0000
11:58:15  09:58:06.451 MESHD.stderr          INFO 2020-06-05 09:58:06.451        net.c:778  mesh_net_set_friend_mode   mesh/net.c:mesh_net_set_friend_mode() mesh_net_set_friend_mode - 0
11:58:15  09:58:06.452 MESHD.stderr          INFO 2020-06-05 09:58:06.451        net.c:292  trigger_heartbeat          mesh/net.c:trigger_heartbeat() trigger_heartbeat: 0001 --> 0
11:58:15  09:58:06.453 MESHD.stderr          INFO 2020-06-05 09:58:06.453 cfgmod-server.c:1263 cfgmod_server_init         mesh/cfgmod-server.c:cfgmod_server_init() 00
11:58:15  09:58:06.454 MESHD.stderr          INFO 2020-06-05 09:58:06.453       mesh.c:712  create_node_ready_cb       mesh/mesh.c:create_node_ready_cb() Calling JoinComplete (create)
11:58:15  09:58:06.461 STORAGE               INFO /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3/node.json
11:58:15  09:58:06.468 STORAGE               INFO /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3/node.json.bak
11:58:15  09:58:06.474 APPLICATION           INFO Leave
11:58:15  09:58:06.475 MESHD.stderr          INFO 2020-06-05 09:58:06.475       mesh.c:659  leave_call                 mesh/mesh.c:leave_call() Leave
11:58:15  09:58:06.475 MESHD.stderr          INFO 2020-06-05 09:58:06.475 mesh-config-json.c:2329 mesh_config_destroy_nvm    mesh/mesh-config-json.c:mesh_config_destroy_nvm() Delete node config /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3
11:58:15  09:58:06.476 MESHD.stderr          INFO 2020-06-05 09:58:06.476       util.c:151  del_fobject                mesh/util.c:del_fobject() RM /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3/node.json.bak
11:58:15  09:58:06.477 MESHD.stderr          INFO 2020-06-05 09:58:06.476       util.c:151  del_fobject                mesh/util.c:del_fobject() RM /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3/node.json
11:58:15  09:58:06.477 MESHD.stderr          INFO 2020-06-05 09:58:06.476       util.c:145  del_fobject                mesh/util.c:del_fobject() RMDIR /tmp/pytest-of-user/pytest-0/test_remove_storage_after_leav0/config/83bf3b46810345a28bcce70d8d0b46d3
11:58:15  09:58:06.477 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:296  free_node_dbus_resources   Node: 0x56413d4cadb0
11:58:15  09:58:06.477 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:306  free_node_dbus_resources   elements: 0x56413d4ca930
11:58:15  09:58:06.478 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:278  free_element_path          el: 0x56413d49f3d0, path: 0x56413d4cac50
11:58:15  09:58:06.478 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:343  free_node_resources        log1
11:58:15  09:58:06.478 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:345  free_node_resources        log2
11:58:15  09:58:06.479 MESHD.stderr          INFO 2020-06-05 09:58:06.476       node.c:347  free_node_resources        log3
11:58:15  09:58:06.479 MESHD.stderr          INFO 2020-06-05 09:58:06.477       node.c:353  free_node_resources        log4
11:58:15  09:58:06.479 MESHD.stderr          INFO 2020-06-05 09:58:06.477       node.c:2414 node_finalize_new_node     Nnnnode: 0x56413d4cadb0
11:58:15  09:58:06.479 MESHD.stderr          INFO 2020-06-05 09:58:06.477       node.c:296  free_node_dbus_resources   Node: 0x56413d4cadb0
11:58:15  09:58:06.480 MESHD.stderr          INFO 2020-06-05 09:58:06.477       node.c:306  free_node_dbus_resources   elements: 0x56413d498010
11:58:15  09:58:06.480 MESHD.segfault        INFO *** Segmentation fault
11:58:15  09:58:06.480 MESHD.registers      DEBUG Register dump:
11:58:15  09:58:06.480 MESHD.registers      DEBUG 
11:58:15  09:58:06.481 MESHD.registers      DEBUG  RAX: 0000000000000000   RBX: 0005000600070007   RCX: 0000000000000000
11:58:15  09:58:06.481 MESHD.registers      DEBUG  RDX: 0000000000000000   RSI: 000056413c31ba70   RDI: 000056413d498010
11:58:15  09:58:06.481 MESHD.registers      DEBUG  RBP: 000056413c31ba70   R8 : 0000000000000019   R9 : 0000000000000019
11:58:15  09:58:06.481 MESHD.registers      DEBUG  R10: 000056413c37a2ae   R11: 0000000000000246   R12: 0000000000000000
11:58:15  09:58:06.482 MESHD.registers      DEBUG  R13: 000056413d4cdf20   R14: 000056413d49e1a0   R15: 0000000000000001
11:58:15  09:58:06.482 MESHD.registers      DEBUG  RSP: 00007ffc556d92b0
11:58:15  09:58:06.482 MESHD.registers      DEBUG 
11:58:15  09:58:06.482 MESHD.registers      DEBUG  RIP: 000056413c347330   EFLAGS: 00010202
11:58:15  09:58:06.483 MESHD.registers      DEBUG 
11:58:15  09:58:06.483 MESHD.registers      DEBUG  CS: 0033   FS: 0000   GS: 0000
11:58:15  09:58:06.483 MESHD.registers      DEBUG 
11:58:15  09:58:06.483 MESHD.registers      DEBUG  Trap: 0000000d   Error: 00000000   OldMask: 00004002   CR2: 00000000
11:58:15  09:58:06.484 MESHD.registers      DEBUG 
11:58:15  09:58:06.484 MESHD.registers      DEBUG  FPUCW: 0000037f   FPUSW: 00000000   TAG: 00000000
11:58:15  09:58:06.484 MESHD.registers      DEBUG  RIP: 00000000   RDP: 00000000
11:58:15  09:58:06.484 MESHD.registers      DEBUG 
11:58:15  09:58:06.485 MESHD.registers      DEBUG  ST(0) 0000 0000000000000000   ST(1) 0000 0000000000000000
11:58:15  09:58:06.485 MESHD.registers      DEBUG  ST(2) 0000 0000000000000000   ST(3) 0000 0000000000000000
11:58:15  09:58:06.485 MESHD.registers      DEBUG  ST(4) 0000 0000000000000000   ST(5) 0000 0000000000000000
11:58:15  09:58:06.485 MESHD.registers      DEBUG  ST(6) 0000 0000000000000000   ST(7) 0000 0000000000000000
11:58:15  09:58:06.486 MESHD.registers      DEBUG  mxcsr: 1f80
11:58:15  09:58:06.486 MESHD.registers      DEBUG  XMM0:  00000000000000000000000000ffff00 XMM1:  00000000000000000000000000ffff00
11:58:15  09:58:06.486 MESHD.registers      DEBUG  XMM2:  00000000000000000000000000ffff00 XMM3:  00000000000000000000000000ffff00
11:58:15  09:58:06.486 MESHD.registers      DEBUG  XMM4:  00000000000000000000000000ffff00 XMM5:  00000000000000000000000000ffff00
11:58:15  09:58:06.487 MESHD.registers      DEBUG  XMM6:  00000000000000000000000000ffff00 XMM7:  00000000000000000000000000ffff00
11:58:15  09:58:06.487 MESHD.registers      DEBUG  XMM8:  00000000000000000000000000ffff00 XMM9:  00000000000000000000000000ffff00
11:58:15  09:58:06.487 MESHD.registers      DEBUG  XMM10: 00000000000000000000000000ffff00 XMM11: 00000000000000000000000000ffff00
11:58:15  09:58:06.487 MESHD.registers      DEBUG  XMM12: 00000000000000000000000000ffff00 XMM13: 00000000000000000000000000ffff00
11:58:15  09:58:06.487 MESHD.registers      DEBUG  XMM14: 00000000000000000000000000ffff00 XMM15: 00000000000000000000000000ffff00
11:58:15  09:58:06.488 MESHD.registers      DEBUG 
11:58:15  09:58:06.489 MESHD.backtrace       INFO Backtrace:
11:58:15  09:58:06.509 MESHD.backtrace       INFO l_queue_foreach /home/user/bluez/ell/queue.c:441 (discriminator 3)
11:58:15  09:58:06.510 MESHD.backtrace      DEBUG  439: 
11:58:15  09:58:06.510 MESHD.backtrace      DEBUG  440:     for (entry = queue->head; entry; entry = entry->next)
11:58:15  09:58:06.511 MESHD.backtrace      DEBUG  441:         function(entry->data, user_data); 👈 😡
11:58:15  09:58:06.511 MESHD.backtrace      DEBUG  442: }
11:58:15  09:58:06.511 MESHD.backtrace      DEBUG  443: 
11:58:15  09:58:06.511 MESHD.backtrace      DEBUG  444: /**
11:58:15  09:58:06.512 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.525 MESHD.backtrace       INFO free_node_dbus_resources /home/user/bluez/mesh/node.c:309
11:58:15  09:58:06.526 MESHD.backtrace      DEBUG  307: 
11:58:15  09:58:06.526 MESHD.backtrace      DEBUG  308:     l_queue_foreach(node->elements, free_element_path, NULL);
11:58:15  09:58:06.527 MESHD.backtrace      DEBUG  309:     l_free(node->owner); 👈 😡
11:58:15  09:58:06.527 MESHD.backtrace      DEBUG  310:     node->owner = NULL;
11:58:15  09:58:06.527 MESHD.backtrace      DEBUG  311:     l_free(node->app_path);
11:58:15  09:58:06.527 MESHD.backtrace      DEBUG  312:     node->app_path = NULL;
11:58:15  09:58:06.528 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.543 MESHD.backtrace       INFO node_finalize_new_node /home/user/bluez/mesh/node.c:2417
11:58:15  09:58:06.544 MESHD.backtrace      DEBUG 2415: 
11:58:15  09:58:06.545 MESHD.backtrace      DEBUG 2416:     free_node_dbus_resources(node);
11:58:15  09:58:06.545 MESHD.backtrace      DEBUG 2417:     mesh_agent_remove(node->agent); 👈 😡
11:58:15  09:58:06.545 MESHD.backtrace      DEBUG 2418: 
11:58:15  09:58:06.545 MESHD.backtrace      DEBUG 2419:     /* Register callback for the node's io */
11:58:15  09:58:06.546 MESHD.backtrace      DEBUG 2420:     attach_io(node, io);
11:58:15  09:58:06.546 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.560 MESHD.backtrace       INFO create_join_complete_reply_cb /home/user/bluez/mesh/mesh.c:679
11:58:15  09:58:06.561 MESHD.backtrace      DEBUG  677:     }
11:58:15  09:58:06.561 MESHD.backtrace      DEBUG  678: 
11:58:15  09:58:06.561 MESHD.backtrace      DEBUG  679:     node_finalize_new_node(node, mesh.io); 👈 😡
11:58:15  09:58:06.561 MESHD.backtrace      DEBUG  680: }
11:58:15  09:58:06.561 MESHD.backtrace      DEBUG  681: 
11:58:15  09:58:06.562 MESHD.backtrace      DEBUG  682: static void create_node_ready_cb(void *user_data, int status,
11:58:15  09:58:06.562 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.572 MESHD.backtrace       INFO send_reply /home/user/bluez/mesh/dbus.c:161
11:58:15  09:58:06.573 MESHD.backtrace      DEBUG  159:     l_timeout_remove(info->timeout);
11:58:15  09:58:06.573 MESHD.backtrace      DEBUG  160:     info->cb(message, info->user_data);
11:58:15  09:58:06.574 MESHD.backtrace      DEBUG  161:     l_free(info); 👈 😡
11:58:15  09:58:06.574 MESHD.backtrace      DEBUG  162: }
11:58:15  09:58:06.574 MESHD.backtrace      DEBUG  163: 
11:58:15  09:58:06.574 MESHD.backtrace      DEBUG  164: static void send_timeout(struct l_timeout *timeout, void *user_data)
11:58:15  09:58:06.575 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.587 MESHD.backtrace       INFO handle_method_return /home/user/bluez/ell/dbus.c:216
11:58:15  09:58:06.588 MESHD.backtrace      DEBUG  214: 
11:58:15  09:58:06.588 MESHD.backtrace      DEBUG  215:     if (callback->callback)
11:58:15  09:58:06.589 MESHD.backtrace      DEBUG  216:         callback->callback(message, callback->user_data); 👈 😡
11:58:15  09:58:06.589 MESHD.backtrace      DEBUG  217: 
11:58:15  09:58:06.589 MESHD.backtrace      DEBUG  218:     message_queue_destroy(callback);
11:58:15  09:58:06.589 MESHD.backtrace      DEBUG  219: }
11:58:15  09:58:06.590 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.601 MESHD.backtrace       INFO io_callback /home/user/bluez/ell/io.c:126
11:58:15  09:58:06.602 MESHD.backtrace      DEBUG  124:                         "read event <%p>", io);
11:58:15  09:58:06.602 MESHD.backtrace      DEBUG  125: 
11:58:15  09:58:06.603 MESHD.backtrace      DEBUG  126:         if (!io->read_handler(io, io->read_data)) { 👈 😡
11:58:15  09:58:06.603 MESHD.backtrace      DEBUG  127:             if (io->read_destroy)
11:58:15  09:58:06.603 MESHD.backtrace      DEBUG  128:                 io->read_destroy(io->read_data);
11:58:15  09:58:06.603 MESHD.backtrace      DEBUG  129: 
11:58:15  09:58:06.604 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.618 MESHD.backtrace       INFO l_main_iterate /home/user/bluez/ell/main.c:467
11:58:15  09:58:06.619 MESHD.backtrace      DEBUG  465:     }
11:58:15  09:58:06.619 MESHD.backtrace      DEBUG  466: 
11:58:15  09:58:06.619 MESHD.backtrace      DEBUG  467:     for (n = 0; n < nfds; n++) { 👈 😡
11:58:15  09:58:06.620 MESHD.backtrace      DEBUG  468:         data = events[n].data.ptr;
11:58:15  09:58:06.620 MESHD.backtrace      DEBUG  469: 
11:58:15  09:58:06.620 MESHD.backtrace      DEBUG  470:         if (data->flags & WATCH_FLAG_DESTROYED)
11:58:15  09:58:06.620 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.635 MESHD.backtrace       INFO l_main_run /home/user/bluez/ell/main.c:516
11:58:15  09:58:06.636 MESHD.backtrace      DEBUG  514: 
11:58:15  09:58:06.637 MESHD.backtrace      DEBUG  515:     for (;;) {
11:58:15  09:58:06.637 MESHD.backtrace      DEBUG  516:         if (epoll_terminate) 👈 😡
11:58:15  09:58:06.638 MESHD.backtrace      DEBUG  517:             break;
11:58:15  09:58:06.639 MESHD.backtrace      DEBUG  518: 
11:58:15  09:58:06.639 MESHD.backtrace      DEBUG  519:         timeout = l_main_prepare();
11:58:15  09:58:06.639 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.656 MESHD.backtrace       INFO l_main_run_with_signal /home/user/bluez/ell/main.c:644
11:58:15  09:58:06.657 MESHD.backtrace      DEBUG  642:     result = l_main_run();
11:58:15  09:58:06.657 MESHD.backtrace      DEBUG  643: 
11:58:15  09:58:06.657 MESHD.backtrace      DEBUG  644:     l_signal_remove(sigint); 👈 😡
11:58:15  09:58:06.658 MESHD.backtrace      DEBUG  645:     l_signal_remove(sigterm);
11:58:15  09:58:06.658 MESHD.backtrace      DEBUG  646: 
11:58:15  09:58:06.658 MESHD.backtrace      DEBUG  647:     l_free(data);
11:58:15  09:58:06.659 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.680 MESHD.backtrace       INFO main /home/user/bluez/mesh/main.c:303
11:58:15  09:58:06.681 MESHD.backtrace      DEBUG  301:     }
11:58:15  09:58:06.681 MESHD.backtrace      DEBUG  302: 
11:58:15  09:58:06.682 MESHD.backtrace      DEBUG  303:     status = l_main_run_with_signal(signal_handler, NULL); 👈 😡
11:58:15  09:58:06.682 MESHD.backtrace      DEBUG  304: 
11:58:15  09:58:06.683 MESHD.backtrace      DEBUG  305: done:
11:58:15  09:58:06.683 MESHD.backtrace      DEBUG  306:     if (io)
11:58:15  09:58:06.683 MESHD.backtrace      DEBUG 
11:58:15  09:58:06.700 MESHD.backtrace       INFO /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7f01065241e3]
11:58:15  09:58:06.721 MESHD.backtrace       INFO _start /usr/libexec/bluetooth/bluetooth-meshd(+0x2b69e)[0x56413c30069e]
11:58:15  09:58:06.722 MESHD.backtrace       INFO 
11:58:15  09:58:06.723 MESHD.memory         DEBUG Memory map:
11:58:15  09:58:06.723 MESHD.memory         DEBUG 
11:58:15  09:58:06.724 MESHD.memory         DEBUG 56413c2d5000-56413c2fe000 r--p 00000000 00:64 3174                       /usr/libexec/bluetooth/bluetooth-meshd
11:58:15  09:58:06.724 MESHD.memory         DEBUG 56413c2fe000-56413c377000 r-xp 00029000 00:64 3174                       /usr/libexec/bluetooth/bluetooth-meshd
11:58:15  09:58:06.725 MESHD.memory         DEBUG 56413c377000-56413c39a000 r--p 000a2000 00:64 3174                       /usr/libexec/bluetooth/bluetooth-meshd
11:58:15  09:58:06.725 MESHD.memory         DEBUG 56413c39b000-56413c39f000 r--p 000c5000 00:64 3174                       /usr/libexec/bluetooth/bluetooth-meshd
11:58:15  09:58:06.725 MESHD.memory         DEBUG 56413c39f000-56413c3bf000 rw-p 000c9000 00:64 3174                       /usr/libexec/bluetooth/bluetooth-meshd
11:58:15  09:58:06.726 MESHD.memory         DEBUG 56413c3bf000-56413c3df000 rw-p 00000000 00:00 0
11:58:15  09:58:06.726 MESHD.memory         DEBUG 56413d498000-56413d4da000 rw-p 00000000 00:00 0                          [heap]
11:58:15  09:58:06.726 MESHD.memory         DEBUG 7f01064b5000-7f01064b8000 r--p 00000000 00:64 5779                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
11:58:15  09:58:06.727 MESHD.memory         DEBUG 7f01064b8000-7f01064c9000 r-xp 00003000 00:64 5779                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
11:58:15  09:58:06.727 MESHD.memory         DEBUG 7f01064c9000-7f01064cd000 r--p 00014000 00:64 5779                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
11:58:15  09:58:06.727 MESHD.memory         DEBUG 7f01064cd000-7f01064ce000 r--p 00017000 00:64 5779                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
11:58:15  09:58:06.728 MESHD.memory         DEBUG 7f01064ce000-7f01064cf000 rw-p 00018000 00:64 5779                       /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
11:58:15  09:58:06.728 MESHD.memory         DEBUG 7f01064cf000-7f01064d2000 rw-p 00000000 00:00 0
11:58:15  09:58:06.728 MESHD.memory         DEBUG 7f01064d2000-7f01064d3000 r--p 00000000 00:64 52                         /usr/lib/x86_64-linux-gnu/libdl-2.30.so
11:58:15  09:58:06.729 MESHD.memory         DEBUG 7f01064d3000-7f01064d5000 r-xp 00001000 00:64 52                         /usr/lib/x86_64-linux-gnu/libdl-2.30.so
11:58:15  09:58:06.729 MESHD.memory         DEBUG 7f01064d5000-7f01064d6000 r--p 00003000 00:64 52                         /usr/lib/x86_64-linux-gnu/libdl-2.30.so
11:58:15  09:58:06.730 MESHD.memory         DEBUG 7f01064d6000-7f01064d7000 r--p 00003000 00:64 52                         /usr/lib/x86_64-linux-gnu/libdl-2.30.so
11:58:15  09:58:06.730 MESHD.memory         DEBUG 7f01064d7000-7f01064d8000 rw-p 00004000 00:64 52                         /usr/lib/x86_64-linux-gnu/libdl-2.30.so
11:58:15  09:58:06.730 MESHD.memory         DEBUG 7f01064d8000-7f01064da000 rw-p 00000000 00:00 0
11:58:15  09:58:06.731 MESHD.memory         DEBUG 7f01064da000-7f01064e1000 r--p 00000000 00:64 77                         /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
11:58:15  09:58:06.731 MESHD.memory         DEBUG 7f01064e1000-7f01064f2000 r-xp 00007000 00:64 77                         /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
11:58:15  09:58:06.731 MESHD.memory         DEBUG 7f01064f2000-7f01064f7000 r--p 00018000 00:64 77                         /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
11:58:15  09:58:06.732 MESHD.memory         DEBUG 7f01064f7000-7f01064f8000 r--p 0001c000 00:64 77                         /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
11:58:15  09:58:06.732 MESHD.memory         DEBUG 7f01064f8000-7f01064f9000 rw-p 0001d000 00:64 77                         /usr/lib/x86_64-linux-gnu/libpthread-2.30.so
11:58:15  09:58:06.732 MESHD.memory         DEBUG 7f01064f9000-7f01064fd000 rw-p 00000000 00:00 0
11:58:15  09:58:06.733 MESHD.memory         DEBUG 7f01064fd000-7f0106522000 r--p 00000000 00:64 42                         /usr/lib/x86_64-linux-gnu/libc-2.30.so
11:58:15  09:58:06.733 MESHD.memory         DEBUG 7f0106522000-7f010669a000 r-xp 00025000 00:64 42                         /usr/lib/x86_64-linux-gnu/libc-2.30.so
11:58:15  09:58:06.733 MESHD.memory         DEBUG 7f010669a000-7f01066e4000 r--p 0019d000 00:64 42                         /usr/lib/x86_64-linux-gnu/libc-2.30.so
11:58:15  09:58:06.734 MESHD.memory         DEBUG 7f01066e4000-7f01066e7000 r--p 001e6000 00:64 42                         /usr/lib/x86_64-linux-gnu/libc-2.30.so
11:58:15  09:58:06.734 MESHD.memory         DEBUG 7f01066e7000-7f01066ea000 rw-p 001e9000 00:64 42                         /usr/lib/x86_64-linux-gnu/libc-2.30.so
11:58:15  09:58:06.735 MESHD.memory         DEBUG 7f01066ea000-7f01066ee000 rw-p 00000000 00:00 0
11:58:15  09:58:06.735 MESHD.memory         DEBUG 7f01066ee000-7f0106766000 r--p 00000000 00:64 3952                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
11:58:15  09:58:06.735 MESHD.memory         DEBUG 7f0106766000-7f0106904000 r-xp 00078000 00:64 3952                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
11:58:15  09:58:06.736 MESHD.memory         DEBUG 7f0106904000-7f0106992000 r--p 00216000 00:64 3952                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
11:58:15  09:58:06.736 MESHD.memory         DEBUG 7f0106992000-7f01069be000 r--p 002a3000 00:64 3952                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
11:58:15  09:58:06.736 MESHD.memory         DEBUG 7f01069be000-7f01069c0000 rw-p 002cf000 00:64 3952                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
11:58:15  09:58:06.737 MESHD.memory         DEBUG 7f01069c0000-7f01069c3000 rw-p 00000000 00:00 0
11:58:15  09:58:06.737 MESHD.memory         DEBUG 7f01069c3000-7f01069df000 r--p 00000000 00:64 4542                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
11:58:15  09:58:06.737 MESHD.memory         DEBUG 7f01069df000-7f0106a2e000 r-xp 0001c000 00:64 4542                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
11:58:15  09:58:06.738 MESHD.memory         DEBUG 7f0106a2e000-7f0106a48000 r--p 0006b000 00:64 4542                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
11:58:15  09:58:06.738 MESHD.memory         DEBUG 7f0106a48000-7f0106a51000 r--p 00084000 00:64 4542                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
11:58:15  09:58:06.738 MESHD.memory         DEBUG 7f0106a51000-7f0106a55000 rw-p 0008d000 00:64 4542                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
11:58:15  09:58:06.739 MESHD.memory         DEBUG 7f0106a55000-7f0106a59000 r--p 00000000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.739 MESHD.memory         DEBUG 7f0106a59000-7f0106a61000 r-xp 00004000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.739 MESHD.memory         DEBUG 7f0106a61000-7f0106a64000 r--p 0000c000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.739 MESHD.memory         DEBUG 7f0106a64000-7f0106a65000 ---p 0000f000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.740 MESHD.memory         DEBUG 7f0106a65000-7f0106a66000 r--p 0000f000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.740 MESHD.memory         DEBUG 7f0106a66000-7f0106a67000 rw-p 00010000 00:64 5702                       /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0
11:58:15  09:58:06.740 MESHD.memory         DEBUG 7f0106a6e000-7f0106a6f000 r--p 00000000 00:64 5700                       /usr/lib/x86_64-linux-gnu/libSegFault.so
11:58:15  09:58:06.741 MESHD.memory         DEBUG 7f0106a6f000-7f0106a72000 r-xp 00001000 00:64 5700                       /usr/lib/x86_64-linux-gnu/libSegFault.so
11:58:15  09:58:06.741 MESHD.memory         DEBUG 7f0106a72000-7f0106a73000 r--p 00004000 00:64 5700                       /usr/lib/x86_64-linux-gnu/libSegFault.so
11:58:15  09:58:06.741 MESHD.memory         DEBUG 7f0106a73000-7f0106a74000 r--p 00004000 00:64 5700                       /usr/lib/x86_64-linux-gnu/libSegFault.so
11:58:15  09:58:06.741 MESHD.memory         DEBUG 7f0106a74000-7f0106a75000 rw-p 00005000 00:64 5700                       /usr/lib/x86_64-linux-gnu/libSegFault.so
11:58:15  09:58:06.742 MESHD.memory         DEBUG 7f0106a75000-7f0106a77000 rw-p 00000000 00:00 0
11:58:15  09:58:06.742 MESHD.memory         DEBUG 7f0106a77000-7f0106a78000 r--p 00000000 00:64 39                         /usr/lib/x86_64-linux-gnu/ld-2.30.so
11:58:15  09:58:06.742 MESHD.memory         DEBUG 7f0106a78000-7f0106a9a000 r-xp 00001000 00:64 39                         /usr/lib/x86_64-linux-gnu/ld-2.30.so
11:58:15  09:58:06.742 MESHD.memory         DEBUG 7f0106a9a000-7f0106aa2000 r--p 00023000 00:64 39                         /usr/lib/x86_64-linux-gnu/ld-2.30.so
11:58:15  09:58:06.743 MESHD.memory         DEBUG 7f0106aa3000-7f0106aa4000 r--p 0002b000 00:64 39                         /usr/lib/x86_64-linux-gnu/ld-2.30.so
11:58:15  09:58:06.743 MESHD.memory         DEBUG 7f0106aa4000-7f0106aa5000 rw-p 0002c000 00:64 39                         /usr/lib/x86_64-linux-gnu/ld-2.30.so
11:58:15  09:58:06.743 MESHD.memory         DEBUG 7f0106aa5000-7f0106aa6000 rw-p 00000000 00:00 0
11:58:15  09:58:06.743 MESHD.memory         DEBUG 7ffc556bb000-7ffc556dc000 rw-p 00000000 00:00 0                          [stack]
11:58:15  09:58:06.744 MESHD.memory         DEBUG 7ffc557e9000-7ffc557ec000 r--p 00000000 00:00 0                          [vvar]
11:58:15  09:58:06.744 MESHD.memory         DEBUG 7ffc557ec000-7ffc557ee000 r-xp 00000000 00:00 0                          [vdso]
11:58:15  09:58:06.744 MESHD.memory         DEBUG ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
11:58:15  09:58:06.746 APPLICATION          ERROR Disconnected from org.bluez.mesh (:1.625)
11:58:15  ---------------------------- Captured log teardown -----------------------------
diff mbox series

Patch

diff --git a/mesh/node.c b/mesh/node.c
index db888d27c..bc7151621 100644
--- a/mesh/node.c
+++ b/mesh/node.c
@@ -264,6 +264,7 @@  static struct mesh_node *node_new(const uint8_t uuid[16])
 	node = l_new(struct mesh_node, 1);
 	node->net = mesh_net_new(node);
 	node->elements = l_queue_new();
+	l_info("new elements: %p", node->elements);
 	memcpy(node->uuid, uuid, sizeof(node->uuid));
 	set_defaults(node);
 
@@ -274,8 +275,11 @@  static void free_element_path(void *a, void *b)
 {
 	struct node_element *element = a;
 
+	l_info("el: %p, path: %p", element, element->path);
+
 	l_free(element->path);
 	element->path = NULL;
+
 }
 
 static void element_free(void *data)
@@ -289,6 +293,8 @@  static void element_free(void *data)
 
 static void free_node_dbus_resources(struct mesh_node *node)
 {
+	l_info("Node: %p", node);
+
 	if (!node)
 		return;
 
@@ -297,6 +303,8 @@  static void free_node_dbus_resources(struct mesh_node *node)
 		node->disc_watch = 0;
 	}
 
+	l_info("elements: %p", node->elements);
+
 	l_queue_foreach(node->elements, free_element_path, NULL);
 	l_free(node->owner);
 	node->owner = NULL;
@@ -332,12 +340,17 @@  static void free_node_resources(void *data)
 
 	/* Free dynamic resources */
 	free_node_dbus_resources(node);
+	l_info("log1");
 	l_queue_destroy(node->elements, element_free);
+	l_info("log2");
+	node->elements = NULL;
+	l_info("log3");
 	mesh_agent_remove(node->agent);
 	mesh_config_release(node->cfg);
 	mesh_net_free(node->net);
 	l_free(node->storage_dir);
 	l_free(node);
+	l_info("log4");
 }
 
 /*
@@ -1198,6 +1211,7 @@  static void convert_node_to_storage(struct mesh_node *node,
 	db_node->seq_number = node->seq_number;
 
 	db_node->elements = l_queue_new();
+	l_info("db_node->elements %p", db_node->elements);
 
 	entry = l_queue_get_entries(node->elements);
 
@@ -1354,6 +1368,8 @@  static bool add_local_node(struct mesh_node *node, uint16_t unicast, bool kr,
 
 	update_net_settings(node);
 
+	mesh_config_save(node->cfg, true, NULL, NULL);
+
 	/* Initialize configuration server model */
 	cfgmod_server_init(node, PRIMARY_ELE_IDX);
 
@@ -2352,6 +2411,8 @@  void node_finalize_new_node(struct mesh_node *node, struct mesh_io *io)
 	if (!node)
 		return;
 
+	l_info("Nnnnode: %p", node);
+
 	free_node_dbus_resources(node);
 	mesh_agent_remove(node->agent);