crypto/async/async.c:197: error: NULL_DEREFERENCE
  pointer `ctx` last assigned on line 193 could be null and is dereferenced at line 197, column 15.
Showing all 8 steps of the trace


crypto/async/async.c:190:1: start of procedure async_start_func()
188.   }
189.   
190. > void async_start_func(void)
191.   {
192.       ASYNC_JOB *job;

crypto/async/async.c:193:5: 
191.   {
192.       ASYNC_JOB *job;
193. >     async_ctx *ctx = async_get_ctx();
194.   
195.       while (1) {

crypto/async/async.c:102:1: start of procedure async_get_ctx()
  100.   }
  101.   
  102. > async_ctx *async_get_ctx(void)
  103.   {
  104.       if (!OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL))

crypto/async/async.c:104:10: Taking true branch
  102.   async_ctx *async_get_ctx(void)
  103.   {
  104.       if (!OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL))
                  ^
  105.           return NULL;
  106.   

crypto/async/async.c:105:9: 
  103.   {
  104.       if (!OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL))
  105. >         return NULL;
  106.   
  107.       return (async_ctx *)CRYPTO_THREAD_get_local(&ctxkey);

crypto/async/async.c:108:1: return from a call to async_get_ctx
  106.   
  107.       return (async_ctx *)CRYPTO_THREAD_get_local(&ctxkey);
  108. > }
  109.   
  110.   static int async_ctx_free(void)

crypto/async/async.c:195:12: Loop condition is true. Entering loop body
193.       async_ctx *ctx = async_get_ctx();
194.   
195.       while (1) {
                  ^
196.           /* Run the job */
197.           job = ctx->currjob;

crypto/async/async.c:197:9: 
195.       while (1) {
196.           /* Run the job */
197. >         job = ctx->currjob;
198.           job->ret = job->func(job->funcargs);
199.   
