From: Alexander H. <ale...@gm...> - 2011-07-29 12:40:21
|
On 7/28/11 10:07 PM, Daniel Johnson wrote: > > On Jul 28, 2011, at 5:01 PM, Alexander Hansen wrote: > >> I get a runtime error from drawtiming if using the libraries from >> graphicsmagick-shlibs-1.3.12-1 (any Mac platform): >> >> $ drawtiming -o test.png /sw/share/drawtiming/samples/guenter.txt >> Assertion failed: (semaphore_info != (SemaphoreInfo *) NULL), function >> LockSemaphoreInfo, file magick/semaphore.c, line 525. >> >> By contrast, with graphicsmagick-shlibs-1.3.7-2 installed, I get the >> following: >> >> $ drawtiming -o test.png /sw/share/drawtiming/samples/guenter.txt >> $ >> >> and test.png is generated >> >> Looking at the graphicsmagick sources, magick/semaphore.c has the >> following on 1.3.12-1: >> >> MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info) >> { >> assert(semaphore_info != (SemaphoreInfo *) NULL); >> assert(semaphore_info->signature == MagickSignature); >> #if defined(USE_POSIX_THREADS) >> PTHREAD_MUTEX_LOCK(&semaphore_info->mutex); >> #endif >> #if defined(USE_WIN32_THREADS) >> EnterCriticalSection(&semaphore_info->mutex); >> #endif >> } >> >> and on 1.3.7-2: >> >> MagickExport MagickPassFail LockSemaphoreInfo(SemaphoreInfo *semaphore_info) >> { >> MagickPassFail >> status=MagickPass; >> >> assert(semaphore_info != (SemaphoreInfo *) NULL); >> /* assert(semaphore_info->signature == MagickSignature); */ >> #if defined(USE_POSIX_THREADS) >> { >> int >> err_status; >> >> if ((err_status = pthread_mutex_lock(&semaphore_info->mutex)) != 0) >> { >> errno=err_status; >> status=MagickFail; >> } >> } >> #endif >> #if defined(USE_WIN32_THREADS) >> EnterCriticalSection(&semaphore_info->mutex); >> #endif >> return(status); >> } >> >> >> -- >> Alexander Hansen, Ph.D. >> Fink User Liaison >> http://finkakh.wordpress.com/ > > This is known: http://sourceforge.net/tracker/?func=detail&aid=3104518&group_id=73485&atid=537937 > > The problem is actually in drawtiming. It's supposed to call InitializeMagick() before doing anything but isn't. Apparently while this was always supposed to be required, it used to work by accident. Now it's a hard requirement. > > Daniel > Thanks for finding this. Drawtiming is now fixed for all. -- Alexander Hansen, Ph.D. Fink User Liaison http://finkakh.wordpress.com/ |