Hello,
I have a simple example code to decrypt an encrypted message using rsa_private(). I use memory_buffer_alloc_init(),  in order to use a static memory for the computation. I want to run my code concurrently. My code works with a single pthread. However, when I try to run more than one thread my program fails to decrypt. 

** I check the same code without memory_buffer_alloc_init(), it works concurrently, without any issues at all. 

Therefore, I believe, the issue that I'm facing is coming from the use of static memory(e.g. memory_buffer_alloc_init()). The documentation of memorry_buffer_alloc.h shows,

/** 
* \brief   Initialize use of stack-based memory allocator. 
*           The stack-based allocator does memory management inside the 
*          presented buffer and does not call malloc() and free(). 
*          It sets the global polarssl_malloc() and polarssl_free() pointers 
*          to its own functions. 
*          (Provided polarssl_malloc() and polarssl_free() are thread-safe if 
*           POLARSSL_THREADING_C is defined)
* \note    This code is not optimized and provides a straight-forward 
*          implementation of a stack-based memory allocator. 
* \param buf   buffer to use as heap 
* \param len   size of the buffer 
* \return              0 if successful 
*/   

So, I added the following configuration to the config.h file  
1. #define POLARSSL_THREADING_PTHREAD
2. #define POLARSSL_THREADING_C

But I'm still getting errors while decrypting. Any help on how to fix this? or what else should I add into the config.h file to make memory_buffer_alloc_init() thread-safe? Here is my sample code: https://pastebin.com/uyW3vknt

Thanks,
Shariful