In some cases icaltimezone_load_builtin_timezone would recursively call into itself so builtin_mutex causes dead lock. Here is the relevant call stack.
#0 0x035a991a in __psynch_mutexwait () #1 0x0346a19b in pthread_mutex_lock () #2 0x000b80d0 in icaltimezone_load_builtin_timezone () #3 0x000b82a8 in icaltimezone_get_component () #4 0x000a9e3d in icalcomponent_remove_component () #5 0x000b81d9 in icaltimezone_load_builtin_timezone () #6 0x000b7711 in icaltimezone_ensure_coverage () #7 0x000b75a0 in icaltimezone_get_utc_offset_of_utc_time () #8 0x000b7314 in icaltimezone_convert_time () #9 0x000b4f61 in icaltime_from_timet_with_zone ()