--- libical-1.0/src/libical/orig.icaltimezone.c 2014-07-28 17:05:08.000000000 +0200 +++ libical-1.0/src/libical/icaltimezone.c 2014-07-28 17:07:13.000000000 +0200 @@ -47,7 +47,10 @@ #ifdef HAVE_PTHREAD #include <pthread.h> -static pthread_mutex_t builtin_mutex = PTHREAD_MUTEX_INITIALIZER; +// static pthread_mutex_t builtin_mutex = PTHREAD_MUTEX_INITIALIZER; +// It seems the same thread can attempt to lock builtin_mutex multiple times +// (at least when using builtin tzdata), so make it builtin_mutex recursive: +static pthread_mutex_t builtin_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; #endif #ifdef WIN32