Skip to content

setconfig causes crash on dynamic multi options #8295

@daywalker90

Description

@daywalker90

If i define a multi option as dynamic in my plugin and then try to set it with setconfig my node crashes.

Running node.rpc.setconfig("sling-inform-layers", ["xpay", "test2"]) from my pytest test:

lightningd-1 2025-05-17T09:57:25.479Z **BROKEN** lightningd: FATAL SIGNAL 6 (version v25.02.1)
lightningd-1 2025-05-17T09:57:25.479Z **BROKEN** lightningd: backtrace: common/daemon.c:41 (send_backtrace) 0x55a6f96948eb
lightningd-1 2025-05-17T09:57:25.479Z **BROKEN** lightningd: backtrace: common/daemon.c:78 (crashdump) 0x55a6f969492b
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 ((null)) 0x7f054642004f
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ./nptl/pthread_kill.c:44 (__pthread_kill_implementation) 0x7f054646eeec
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ../sysdeps/posix/raise.c:26 (__GI_raise) 0x7f054641ffb1
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ./stdlib/abort.c:79 (__GI_abort) 0x7f054640a471
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ./assert/assert.c:94 (__assert_fail_base) 0x7f054640a394
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ./assert/assert.c:103 (__GI___assert_fail) 0x7f0546418ec1
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/configs.c:662 (json_setconfig) 0x55a6f966f30b
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/jsonrpc.c:1696 (json_check) 0x55a6f9637741
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/jsonrpc.c:808 (command_exec) 0x55a6f9636c02
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/jsonrpc.c:954 (rpc_command_hook_final) 0x55a6f9638a06
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/plugin_hook.c:196 (plugin_hook_call_next) 0x55a6f9666d84
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/plugin_hook.c:183 (plugin_hook_callback) 0x55a6f9666f4f
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/plugin.c:661 (plugin_response_handle) 0x55a6f966132f
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/plugin.c:773 (plugin_read_json_one) 0x55a6f9664ab8
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/plugin.c:824 (plugin_read_json) 0x55a6f9664d54
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ccan/ccan/io/io.c:60 (next_plan) 0x55a6f974a9c6
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ccan/ccan/io/io.c:422 (do_plan) 0x55a6f974ae51
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ccan/ccan/io/io.c:439 (io_ready) 0x55a6f974af0a
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: ccan/ccan/io/poll.c:455 (io_loop) 0x55a6f974c7c5
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/io_loop_with_timers.c:22 (io_loop_with_timers) 0x55a6f9636b14
lightningd-1 2025-05-17T09:57:25.480Z **BROKEN** lightningd: backtrace: lightningd/lightningd.c:1490 (main) 0x55a6f963c3b5
lightningd-1 2025-05-17T09:57:25.481Z **BROKEN** lightningd: backtrace: ../sysdeps/nptl/libc_start_call_main.h:58 (__libc_start_call_main) 0x7f054640b249
lightningd-1 2025-05-17T09:57:25.481Z **BROKEN** lightningd: backtrace: ../csu/libc-start.c:360 (__libc_start_main_impl) 0x7f054640b304
lightningd-1 2025-05-17T09:57:25.481Z **BROKEN** lightningd: backtrace: (null):0 ((null)) 0x55a6f960ff80
lightningd-1 2025-05-17T09:57:25.481Z **BROKEN** lightningd: backtrace: (null):0 ((null)) 0xffffffffffffffff
----------------------------------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------------------------------
lightningd: lightningd/configs.c:662: json_setconfig: Assertion `!(ot->type & OPT_MULTI)' failed.
lightningd: FATAL SIGNAL 6 (version v25.02.1)
0x55a6f969489e send_backtrace
        common/daemon.c:33
0x55a6f969492b crashdump
        common/daemon.c:78
0x7f054642004f ???
        ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x7f054646eeec __pthread_kill_implementation
        ./nptl/pthread_kill.c:44
0x7f054641ffb1 __GI_raise
        ../sysdeps/posix/raise.c:26
0x7f054640a471 __GI_abort
        ./stdlib/abort.c:79
0x7f054640a394 __assert_fail_base
        ./assert/assert.c:94
0x7f0546418ec1 __GI___assert_fail
        ./assert/assert.c:103
0x55a6f966f30b json_setconfig
        lightningd/configs.c:662
0x55a6f9637741 json_check
        lightningd/jsonrpc.c:1696
0x55a6f9636c02 command_exec
        lightningd/jsonrpc.c:808
0x55a6f9638a06 rpc_command_hook_final
        lightningd/jsonrpc.c:954
0x55a6f9666d84 plugin_hook_call_next
        lightningd/plugin_hook.c:196
0x55a6f9666f4f plugin_hook_callback
        lightningd/plugin_hook.c:183
0x55a6f966132f plugin_response_handle
        lightningd/plugin.c:661
0x55a6f9664ab8 plugin_read_json_one
        lightningd/plugin.c:773
0x55a6f9664d54 plugin_read_json
        lightningd/plugin.c:824
0x55a6f974a9c6 next_plan
        ccan/ccan/io/io.c:60
0x55a6f974ae51 do_plan
        ccan/ccan/io/io.c:422
0x55a6f974af0a io_ready
        ccan/ccan/io/io.c:439
0x55a6f974c7c5 io_loop
        ccan/ccan/io/poll.c:455
0x55a6f9636b14 io_loop_with_timers
        lightningd/io_loop_with_timers.c:22
0x55a6f963c3b5 main
        lightningd/lightningd.c:1490
0x7f054640b249 __libc_start_call_main
        ../sysdeps/nptl/libc_start_call_main.h:58
0x7f054640b304 __libc_start_main_impl
        ../csu/libc-start.c:360
0x55a6f960ff80 ???
        ???:0
0xffffffffffffffff ???
        ???:0

I'd like setconfig to work with multi options aswell, if not possible atleast not crash.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions