AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Moderate 58 Bitcoin

askrene: regression test that triggers assertion

Public commit record

What the developer wrote

Authored by Lagrang3

78/100 · Adequate
askrene: regression test that triggers assertion

cln-askrene: plugins/askrene/mcf.c:474: combine_cost_function: Assertion `fcost != INFINITE' failed.
cln-askrene: FATAL SIGNAL 6 (version v25.12-131-gb15f386-modded)
0x55703f242fd1 send_backtrace
common/daemon.c:38
0x55703f24305b crashdump
common/daemon.c:83
0x7f548b421def ???
./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x7f548b47695c __pthread_kill_implementation
./nptl/pthread_kill.c:44
0x7f548b421cc1 __GI_raise
../sysdeps/posix/raise.c:26
0x7f548b40a4ab __GI_abort
./stdlib/abort.c:73
0x7f548b40a41f __assert_fail_base
./assert/assert.c:118
0x55703f234491 combine_cost_function
plugins/askrene/mcf.c:474
0x55703f2358b6 single_path_flow
plugins/askrene/mcf.c:1213
0x55703f235fa2 linear_routes
plugins/askrene/mcf.c:1411
0x55703f236804 single_path_routes
plugins/askrene/mcf.c:1656
0x55703f22edad do_getroutes
plugins/askrene/askrene.c:689
0x55703f22f269 json_getroutes
plugins/askrene/askrene.c:910
0x55703f2411a7 ld_command_handle
plugins/libplugin.c:2155
0x55703f2413b1 ld_read_json
plugins/libplugin.c:2231
0x55703f271a4d next_plan
ccan/ccan/io/io.c:60
0x55703f271ed8 do_plan
ccan/ccan/io/io.c:422
0x55703f271f91 io_ready
ccan/ccan/io/io.c:439
0x55703f27391b io_loop
ccan/ccan/io/poll.c:470
0x55703f2417fd plugin_main
plugins/libplugin.c:2429
0x55703f22f753 main
plugins/askrene/askrene.c:1452
0x7f548b40bca7 __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
0x7f548b40bd64 __libc_start_main_impl
../csu/libc-start.c:360
0x55703f22baa0 ???
_start+0x20:0
0xffffffffffffffff ???
???:0

Changelog-None

Signed-off-by: Lagrang3 <lagrang3@protonmail.com>
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
The short version

What changed, and why it matters

This commit adds a skipped regression test that demonstrates a crash in Core Lightning's routing plugin (askrene). When a user-defined channel has an unusually high routing fee, the plugin's single-path solver hits an internal assertion and aborts. The test is currently disabled with @unittest.skip, so it documents the bug rather than fixing it. A remote user who can call the getroutes RPC with crafted layer parameters could likely trigger the plugin to crash, causing a denial of service.

Recommended action

Treat as a known crash bug / denial-of-service issue. The skipped test should be enabled only after fixing combine_cost_function to handle INFINITE cost without aborting. Review fee-cost arithmetic for overflow or unbounded growth, and ensure the solver returns a clean 'excessive cost' error instead of aborting the plugin. Consider restricting creation of channels with fee rates that can produce INFINITE costs, or clamping computed costs.

Security signals we found

01

Assertion failure leading to plugin abort (SIGABRT)

02

Crash reachable through JSON-RPC getroutes

03

Denial-of-service vector in routing plugin

04

Regression test supplied but skipped, indicating known unfixed bug

Risk score

Why this scored 58/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 10/15
Confidence 7/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.