From e18425197e41cc2ecdc475cbd9d18ce36cb1b6e4 Mon Sep 17 00:00:00 2001 From: Martin Nowak Date: Sun, 19 Aug 2018 10:42:04 +0200 Subject: [PATCH] fix FS#13060 - Seeking in long opus files leads to crash on Sansa Clip+ - increase decoder thread stack size just enough (2KiB) to avoid stack overflows when seeking in opus files - only do so on devices with at least 8MiB of RAM Change-Id: I7e7182ae866338b4aad6ed7e32391ddd667121bd --- apps/codec_thread.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/codec_thread.c b/apps/codec_thread.c index b511809d6d..e45e9aec6b 100644 --- a/apps/codec_thread.c +++ b/apps/codec_thread.c @@ -90,7 +90,9 @@ extern struct codec_api ci; /* from codecs.c */ static unsigned int codec_thread_id; /* For modifying thread priority later */ static struct event_queue codec_queue SHAREDBSS_ATTR; static struct queue_sender_list codec_queue_sender_list SHAREDBSS_ATTR; -static long codec_stack[(DEFAULT_STACK_SIZE + 0x2000)/sizeof(long)] IBSS_ATTR; +/* Workaround stack overflow in opus codec on highmem devices (see FS#13060). */ +#define WORKAROUND_FS13060 (MEMORYSIZE >= 8 ? 0x800 : 0) +static long codec_stack[(DEFAULT_STACK_SIZE + 0x2000 + WORKAROUND_FS13060)/sizeof(long)] IBSS_ATTR; static const char codec_thread_name[] = "codec"; static void unload_codec(void);