From a1d1e3b14877d7a90aa546eb3ae93bc33d86ffd5 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Thu, 20 Feb 2020 00:39:28 -0800 Subject: [PATCH] 1st prize for most insane compiler/execution bug - release --- components/raop/raop.c | 19 ++++++++++++++----- sdkconfig.defaults | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/components/raop/raop.c b/components/raop/raop.c index 74734dc1..55702eb6 100644 --- a/components/raop/raop.c +++ b/components/raop/raop.c @@ -55,7 +55,7 @@ typedef struct raop_ctx_s { short unsigned port; // RTSP port for AirPlay int sock; // socket of the above struct in_addr peer; // IP of the iDevice (airplay sender) - bool running, abort; + bool running; #ifdef WIN32 pthread_t thread, search_thread; #else @@ -63,6 +63,11 @@ typedef struct raop_ctx_s { StaticTask_t *xTaskBuffer; StackType_t xStack[RTSP_STACK_SIZE] __attribute__ ((aligned (4))); #endif + /* + Compiler/Execution bug: if this bool is next to 'running', the rtsp_thread + loop sees 'running' being set to false from at first execution ... + */ + bool abort; unsigned char mac[6]; int latency; struct { @@ -182,7 +187,7 @@ struct raop_ctx_s *raop_create(struct in_addr host, char *name, ctx->port = ntohs(addr.sin_port); #endif ctx->running = true; - memcpy(ctx->mac, mac, 6); + memcpy(ctx->mac, mac, 6); snprintf(id, 64, "%02X%02X%02X%02X%02X%02X@%s", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], name); #ifdef WIN32 // seems that Windows snprintf does not add NULL char if actual size > max @@ -214,7 +219,7 @@ void raop_delete(struct raop_ctx_s *ctx) { socklen_t nlen = sizeof(struct sockaddr); #endif -if (!ctx) return; + if (!ctx) return; #ifdef WIN32 ctx->running = false; @@ -406,11 +411,15 @@ static void *rtsp_thread(void *arg) { sock = -1; } } - + if (sock != -1) closesocket(sock); #ifndef WIN32 - xTaskNotifyGive(ctx->joiner); + if (!ctx->joiner) { + LOG_ERROR("We shall not be here %u! %x %x", ctx->running); + } else { + xTaskNotifyGive(ctx->joiner); + } vTaskSuspend(NULL); #endif diff --git a/sdkconfig.defaults b/sdkconfig.defaults index a556b39c..ba1d6f53 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -2,6 +2,11 @@ # Automatically generated file. DO NOT EDIT. # Espressif IoT Development Framework (ESP-IDF) Project Configuration # + +# DSP +CONFIG_DSP_OPTIMIZED=y +CONFIG_DSP_OPTIMIZATION=1 +CONFIG_DSP_MAX_FFT_SIZE_512=y CONFIG_IDF_TARGET_ESP32=y CONFIG_IDF_TARGET="esp32" @@ -11,7 +16,12 @@ CONFIG_IDF_TARGET="esp32" CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" CONFIG_SDK_MAKE_WARN_UNDEFINED_VARIABLES=y CONFIG_APP_COMPILE_TIME_DATE=y + + + CONFIG_OTA_ALLOW_HTTP=y + + CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y @@ -102,6 +112,7 @@ CONFIG_DEFAULT_AP_NETMASK="255.255.255.0" CONFIG_DEFAULT_AP_MAX_CONNECTIONS=4 CONFIG_DEFAULT_AP_BEACON_INTERVAL=100 CONFIG_DEFAULT_COMMAND_LINE="squeezelite -o I2S -b 500:2000 -d all=info -C 30" + CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE=y CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y @@ -570,7 +581,7 @@ CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 -CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2432 CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 @@ -599,6 +610,7 @@ CONFIG_LWIP_LOCAL_HOSTNAME="espressif" CONFIG_LWIP_TIMERS_ONDEMAND=y CONFIG_LWIP_MAX_SOCKETS=16 + CONFIG_LWIP_SO_REUSE=y CONFIG_LWIP_SO_REUSE_RXTOALL=y @@ -775,6 +787,7 @@ CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y CONFIG_VFS_SUPPORT_TERMIOS=y CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 + CONFIG_WL_SECTOR_SIZE_512=y #CONFIG_WL_SECTOR_SIZE_4096 is not defined CONFIG_WL_SECTOR_SIZE=512