Crash due to invalid/empty db entries
I have a Dell TB16 that was plugged in and I manually authorized both cable and dock using boltctl
.
bolt 0.2-0ubuntu1 from Ubuntu 18.04.
Bolt is immediately crashing at startup. Here is the stacktrace:
--- stack trace ---
#0 0x000055b898cf2281 in handle_gerror_field (key=<optimized out>, ptr=<optimized out>, ctx=0x7ffe77adb3d0) at ../boltd/bolt-log.c:221
field = 0x7ffe77adb4a0
handled = 1
ptr = 0x0
ctx = {device = 0x0, error = 0x0, self = 0x0, message = 0x7ffe77adb410, priority = 0x7ffe77adb428, domain = 0x7ffe77adb440, topic = 0x0, n_fields = 7, fields = {{key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x55b898cf938b "CODE_FILE", value = 0x55b898cf9602, length = -1}, {key = 0x55b898cf9369 "CODE_LINE", value = 0x55b898cf99db, length = -1}, {key = 0x55b898cf93be "CODE_FUNC", value = 0x55b898cfa220 <__func__.27317>, length = -1}, {key = 0x0, value = 0x0, length = 0} <repeats 26 times>}, allocated = 0}
message = '\000' <repeats 1023 times>
key = 0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>
#1 0x000055b898cf2281 in handle_special_field (ptr=<optimized out>, key=<optimized out>, ctx=0x7ffe77adb3d0) at ../boltd/bolt-log.c:264
handled = 1
ptr = 0x0
ctx = {device = 0x0, error = 0x0, self = 0x0, message = 0x7ffe77adb410, priority = 0x7ffe77adb428, domain = 0x7ffe77adb440, topic = 0x0, n_fields = 7, fields = {{key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x55b898cf938b "CODE_FILE", value = 0x55b898cf9602, length = -1}, {key = 0x55b898cf9369 "CODE_LINE", value = 0x55b898cf99db, length = -1}, {key = 0x55b898cf93be "CODE_FUNC", value = 0x55b898cfa220 <__func__.27317>, length = -1}, {key = 0x0, value = 0x0, length = 0} <repeats 26 times>}, allocated = 0}
message = '\000' <repeats 1023 times>
key = 0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>
#2 0x000055b898cf2281 in bolt_logv (domain=0x55b898cf9558 "bolt", level=G_LOG_LEVEL_WARNING, args=args@entry=0x7ffe77adbb70) at ../boltd/bolt-log.c:327
ptr = 0x0
ctx = {device = 0x0, error = 0x0, self = 0x0, message = 0x7ffe77adb410, priority = 0x7ffe77adb428, domain = 0x7ffe77adb440, topic = 0x0, n_fields = 7, fields = {{key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x0, value = 0x0, length = 0}, {key = 0x55b898cf938b "CODE_FILE", value = 0x55b898cf9602, length = -1}, {key = 0x55b898cf9369 "CODE_LINE", value = 0x55b898cf99db, length = -1}, {key = 0x55b898cf93be "CODE_FUNC", value = 0x55b898cfa220 <__func__.27317>, length = -1}, {key = 0x0, value = 0x0, length = 0} <repeats 26 times>}, allocated = 0}
message = '\000' <repeats 1023 times>
key = 0xffffffffffffffff <error: Cannot access memory at address 0xffffffffffffffff>
#3 0x000055b898cf2434 in bolt_log (domain=domain@entry=0x55b898cf9558 "bolt", level=level@entry=G_LOG_LEVEL_WARNING) at ../boltd/bolt-log.c:300
args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7ffe77adbc70, reg_save_area = 0x7ffe77adbb90}}
#4 0x000055b898ced9fd in bolt_manager_initialize (initable=<optimized out>, cancellable=<optimized out>, error=<optimized out>) at ../boltd/bolt-manager.c:616
err = 0x0
dev = <optimized out>
uid = 0x7f325c007290 "ca030000-0092-8f18-a218-f4d4eac2a918"
i = 0
ids = 0x55b899623af0
enumerate = <optimized out>
l = <optimized out>
devices = <optimized out>
ok = <optimized out>
__func__ = "bolt_manager_initialize"
#5 0x00007f3270fe25a7 in g_initable_new_valist () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#6 0x00007f3270fe2659 in g_initable_new () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#7 0x000055b898cebb10 in on_bus_acquired (connection=0x55b899605070, name=<optimized out>, user_data=<optimized out>) at ../boltd/bolt-daemon.c:99
error = 0x0
__func__ = "on_bus_acquired"
#8 0x00007f3271049424 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#9 0x00007f327100d093 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#10 0x00007f327100dab6 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#11 0x00007f327103bfb2 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#12 0x00007f327100d093 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#13 0x00007f327100d0c9 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#14 0x00007f327136a0f5 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007f327136a4c0 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f327136a7d2 in g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x000055b898ceb5b9 in main (argc=<optimized out>, argv=<optimized out>) at ../boltd/bolt-daemon.c:218
session_id = 0x55b8995f08a0 "74db49de-fedf-499a-91b9-05692c38857d"
error = 0x0
context = <optimized out>
replace = 0
show_version = 0
session_bus = 0
bus_type = <optimized out>
flags = <optimized out>
log = {debug = 0, session_id = 0x55b8995f08a0 "74db49de-fedf-499a-91b9-05692c38857d"}
options = {{long_name = 0x55b898cf945e "replace", short_name = 114 'r', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7ffe77adc07c, description = 0x55b898cf9466 "Replace old daemon.", arg_description = 0x0}, {long_name = 0x55b898cf947a "session-bus", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7ffe77adc084, description = 0x55b898cf9486 "Use the session bus.", arg_description = 0x0}, {long_name = 0x55b898cf949b "verbose", short_name = 118 'v', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7ffe77adc090, description = 0x55b898cf94a3 "Enable debug output.", arg_description = 0x0}, {long_name = 0x55b898cf94b8 "version", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7ffe77adc080, description = 0x55b898cf94c0 "Print daemon version.", arg_description = 0x0}, {long_name = 0x0, short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}}
__func__ = "main"
--- source code stack trace ---
#0 0x000055b898cf2281 in handle_gerror_field (key=<optimized out>, ptr=<optimized out>, ctx=0x7ffe77adb3d0) at ../boltd/bolt-log.c:221
216:
217: ctx->error = error;
218:
219: bolt_log_ctx_next_field (ctx, &field);
220: field->key = BOLT_LOG_ERROR_DOMAIN;
221: field->value = g_quark_to_string (error->domain);
222: field->length = -1;
223:
224: bolt_log_ctx_next_field (ctx, &field);
225: field->key = BOLT_LOG_ERROR_CODE;
226: field->value = &error->code;
#1 0x000055b898cf2281 in handle_special_field (ptr=<optimized out>, key=<optimized out>, ctx=0x7ffe77adb3d0) at ../boltd/bolt-log.c:264
259: key++; /* remove the special key indicator */
260:
261: if (g_str_has_prefix (key, "device"))
262: handle_device_field (ctx, key, ptr);
263: else if (g_str_equal (key, "error"))
264: handle_gerror_field (ctx, key, ptr);
265: else if (g_str_equal (key, "topic"))
266: handle_topic_field (ctx, key, ptr);
267: else
268:
269: handled = FALSE;
#2 0x000055b898cf2281 in bolt_logv (domain=0x55b898cf9558 "bolt", level=G_LOG_LEVEL_WARNING, args=args@entry=0x7ffe77adbb70) at ../boltd/bolt-log.c:327
322: gboolean handled;
323:
324: if (*key == LOG_SPECIAL_CHAR)
325: {
326: gpointer ptr = va_arg (args, gpointer);
327: handled = handle_special_field (&ctx, key, ptr);
328: }
329: else if (*key == LOG_PASSTHROUGH_CHAR)
330: {
331: const char *val = va_arg (args, const char *);
332: handled = handle_passthrough_field (&ctx, key, val);
#3 0x000055b898cf2434 in bolt_log (domain=domain@entry=0x55b898cf9558 "bolt", level=level@entry=G_LOG_LEVEL_WARNING) at ../boltd/bolt-log.c:300
295: ...)
296: {
297: va_list args;
298:
299: va_start (args, level);
300: bolt_logv (domain, level, args);
301: va_end (args);
302: }
303:
304: #pragma GCC diagnostic push
305: #pragma GCC diagnostic ignored "-Wformat-nonliteral"
#4 0x000055b898ced9fd in bolt_manager_initialize (initable=<optimized out>, cancellable=<optimized out>, error=<optimized out>) at ../boltd/bolt-manager.c:616
611: bolt_info (LOG_DEV_UID (uid), LOG_TOPIC ("store"), "loading device");
612:
613: dev = bolt_store_get_device (mgr->store, uid, &err);
614: if (dev == NULL)
615: {
616: bolt_warn_err (err, LOG_TOPIC ("store"),
617: LOG_DIRECT (BOLT_LOG_DEVICE_UID, uid),
618: "failed to load device (%.7s)", uid);
619: continue;
620: }
621:
#5 0x00007f3270fe25a7 in g_initable_new_valist () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#6 0x00007f3270fe2659 in g_initable_new () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#7 0x000055b898cebb10 in on_bus_acquired (connection=0x55b899605070, name=<optimized out>, user_data=<optimized out>) at ../boltd/bolt-daemon.c:99
94: {
95: g_autoptr(GError) error = NULL;
96:
97: bolt_debug (LOG_TOPIC ("dbus"), "got the bus [%s]", name);
98: /* */
99: manager = g_initable_new (BOLT_TYPE_MANAGER,
100: NULL, &error,
101: NULL);
102:
103: if (manager == NULL)
104: {
#8 0x00007f3271049424 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#9 0x00007f327100d093 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#10 0x00007f327100dab6 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#11 0x00007f327103bfb2 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#12 0x00007f327100d093 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#13 0x00007f327100d0c9 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#14 0x00007f327136a0f5 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#15 0x00007f327136a4c0 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f327136a7d2 in g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x000055b898ceb5b9 in main (argc=<optimized out>, argv=<optimized out>) at ../boltd/bolt-daemon.c:218
213: on_name_lost,
214: NULL,
215: NULL);
216:
217: main_loop = g_main_loop_new (NULL, FALSE);
218: g_main_loop_run (main_loop);
219:
220: /* When all is said and done, more is said then done. */
221: g_main_loop_unref (main_loop);
222:
223: return EXIT_SUCCESS;
Here is what was in my /var/lib/boltd/devices
:
ca030000-0092-8f18-a218-f4d4eac2a918 d9010000-0062-6708-a2a7-f7d086515218
-rw-r--r-- 1 root root 0 May 1 11:25 ca030000-0092-8f18-a218-f4d4eac2a918
-rw-r--r-- 1 root root 0 May 1 11:25 d9010000-0062-6708-a2a7-f7d086515218
I removed those files from /var/lib/boltd/devices
and then boltd started up fine.
Edited by Christian Kellner