Stdout: scons: Entering directory `/home/runner/.ufbt/current/scripts/ufbt' ICONS /home/runner/.ufbt/build/multi_counter/multi_counter_icons.c CC /home/runner/.ufbt/build/multi_counter/multi_counter_icons.c CC /tmp/tmpuvfnq5w4/code/counter.c Stderr: /tmp/tmpuvfnq5w4/code/counter.c: In function 'state_free': /tmp/tmpuvfnq5w4/code/counter.c:105:22: error: passing argument 1 of 'furi_mutex_free' from incompatible pointer type [-Werror=incompatible-pointer-types] 105 | furi_mutex_free(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} In file included from /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/furi.h:15, from /tmp/tmpuvfnq5w4/code/counter.c:1: /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:33:33: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 33 | void furi_mutex_free(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ In file included from /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/furi.h:6: /tmp/tmpuvfnq5w4/code/counter.c: In function 'render_callback': /tmp/tmpuvfnq5w4/code/counter.c:122:36: error: passing argument 1 of 'furi_mutex_acquire' from incompatible pointer type [-Werror=incompatible-pointer-types] 122 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:64:14: note: in definition of macro '__furi_check' 64 | if(!(__e)) { \ | ^~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:5: note: in expansion of macro 'M_APPLY' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:30: note: in expansion of macro 'M_DEFAULT_ARGS_EVAL' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:50: note: in expansion of macro 'M_DEFAULT_ARGS2' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:27: note: in expansion of macro 'M_DEFAULT_ARGS' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:122:5: note: in expansion of macro 'furi_check' 122 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ^~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:42:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 42 | FuriStatus furi_mutex_acquire(FuriMutex* instance, uint32_t timeout); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:232:25: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 232 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:236:25: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 236 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:240:25: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 240 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:244:25: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 244 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c: In function 'state_init': /tmp/tmpuvfnq5w4/code/counter.c:254:14: error: assignment to 'FuriMutex **' {aka 'struct FuriMutex **'} from incompatible pointer type 'FuriMutex *' {aka 'struct FuriMutex *'} [-Werror=incompatible-pointer-types] 254 | c->mutex = furi_mutex_alloc(FuriMutexTypeNormal); | ^ /tmp/tmpuvfnq5w4/code/counter.c: In function 'counterapp': /tmp/tmpuvfnq5w4/code/counter.c:280:40: error: passing argument 1 of 'furi_mutex_acquire' from incompatible pointer type [-Werror=incompatible-pointer-types] 280 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:64:14: note: in definition of macro '__furi_check' 64 | if(!(__e)) { \ | ^~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:5: note: in expansion of macro 'M_APPLY' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:30: note: in expansion of macro 'M_DEFAULT_ARGS_EVAL' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:50: note: in expansion of macro 'M_DEFAULT_ARGS2' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:27: note: in expansion of macro 'M_DEFAULT_ARGS' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:280:9: note: in expansion of macro 'furi_check' 280 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ^~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:42:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 42 | FuriStatus furi_mutex_acquire(FuriMutex* instance, uint32_t timeout); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:285:37: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 285 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /tmp/tmpuvfnq5w4/code/counter.c:393:29: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 393 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ cc1: all warnings being treated as errors scons: *** [/home/runner/.ufbt/build/multi_counter/counter.o] Error 1