mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
46af92d3a0
18620: core: add core_mutex_debug to aid debugging deadlocks r=maribu a=maribu ### Contribution description Adding `USEMODULE += core_mutex_debug` to your `Makefile` results in on log messages such as [mutex] waiting for thread 1 (pc = 0x800024d) being added whenever `mutex_lock()` blocks. This makes tracing down deadlocks easier. ### Testing procedure Run e.g. ```sh USEMODULE=core_mutex_debug BOARD=nucleo-f767zi make -C tests/mutex_cancel flash test ``` which should provide output such as ``` Welcome to pyterm! Type '/exit' to exit. READY s [mutex] waiting for thread 1 (pc = 0x8000f35) START main(): This is RIOT! (Version: 2022.10-devel-841-g5cc02-core/mutex/debug) Test Application for mutex_cancel / mutex_lock_cancelable ========================================================= Test without cancellation: OK Test early cancellation: OK Verify no side effects on subsequent calls: [mutex] waiting for thread 1 (pc = 0x800024d) OK Test late cancellation: [mutex] waiting for thread 1 (pc = 0x0) OK TEST PASSED ``` ```sh $ arm-none-eabi-addr2line -a 0x800024d -e tests/mutex_cancel/bin/nucleo-f767zi/tests_mutex_cancel.elf 0x0800024d /home/maribu/Repos/software/RIOT/tests/mutex_cancel/main.c:51 ``` ### Issues/PRs references Depends on and includes https://github.com/RIOT-OS/RIOT/pull/18619 19296: nanocoap: allow to define CoAP resources as XFA r=maribu a=benpicco 19504: cpu/cc26xx_cc13xx: Fix bogus array-bound warning r=maribu a=maribu ### Contribution description GCC 12 create a bogus array out of bounds warning as it assumes that because there is special handling for `uart == 0` and `uart == 1`, `uart` can indeed be `1`. There is an `assert(uart < UART_NUMOF)` above that would blow up prior to any out of bounds access. In any case, optimizing out the special handling of `uart == 1` for when `UART_NUMOF == 1` likely improves the generated code and fixes the warning. /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:88:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 88 | ctx[uart].rx_cb = rx_cb; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:89:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 89 | ctx[uart].arg = arg; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ ### Testing procedure The actual change is a pretty obvious one-liner, so that code review and a green CI should be sufficient. If not, running any UART example app without regression should do. ### Issues/PRs references None 19506: tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT r=maribu a=maribu ### Contribution description The OPENOCD_CMD_RESET_HALT was not longer correctly passed to the script. This fixes the issue. ### Testing procedure Flashing of e.g. the `cc2650-launchpad` with upstream OpenOCD should work again. ### Issues/PRs references The change was added to https://github.com/RIOT-OS/RIOT/pull/19050 after testing the PR and before merging. I'm not sure if the fix never worked because of this, or if behavior of `target-export-variables` or GNU Make changed. Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de> Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de> Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com> |
||
---|---|---|
.. | ||
arduino_hello-world | ||
asymcute_mqttsn | ||
benchmark_udp | ||
bindist | ||
blinky | ||
ccn-lite-relay | ||
cord_ep | ||
cord_epsim | ||
cord_lc | ||
default | ||
dtls-echo | ||
dtls-sock | ||
dtls-wolfssl | ||
emcute_mqttsn | ||
filesystem | ||
gcoap | ||
gcoap_block_server | ||
gcoap_dtls | ||
gcoap_fileserver | ||
gnrc_border_router | ||
gnrc_lorawan | ||
gnrc_minimal | ||
gnrc_networking | ||
gnrc_networking_mac | ||
gnrc_networking_subnets | ||
hello-world | ||
ipc_pingpong | ||
javascript | ||
lorawan | ||
lua_basic | ||
lua_REPL | ||
micropython | ||
nanocoap_server | ||
ndn-ping | ||
nimble_gatt | ||
nimble_heart_rate_sensor | ||
nimble_scanner | ||
openthread | ||
paho-mqtt | ||
posix_select | ||
posix_sockets | ||
riot_and_cpp | ||
rust-gcoap | ||
rust-hello-world | ||
saul | ||
senml_saul | ||
skald_eddystone | ||
skald_ibeacon | ||
sniffer | ||
spectrum-scanner | ||
suit_update | ||
telnet_server | ||
thread_duel | ||
timer_periodic_wakeup | ||
twr_aloha | ||
usbus_minimal | ||
wakaama | ||
wasm | ||
.gitignore |