[cairo] Crash with 1.4.4

Carl Worth cworth at cworth.org
Wed Apr 18 22:16:04 PDT 2007


On Wed, 18 Apr 2007 22:54:44 -0500 (CDT), "Jordan Miner" wrote:
> put in printfs to narrow it down. I found that it is crashing in
> cairo-pattern.c in _cairo_pattern_create_solid on the line:
>
>     CAIRO_MUTEX_LOCK (_cairo_pattern_solid_cache_lock);

We had a couple of similar reports in IRC. What happened was that with
previous releases we had kept forgetting to manually add new mutexes
to a win32-specific list, so the win32 build kept breaking.

We tried to fix this by centralizing all the mutex declarations to a
single list, but clearly we botched the implementation.

> _cairo_mutex_initialized is false.

Thanks for the clue. Here's the bug:

	void _cairo_mutex_initialize (void)
	{
	    if (_cairo_mutex_initialized)
	        return;

	#define CAIRO_MUTEX_DECLARE(mutex) CAIRO_MUTEX_INIT (mutex);
	#include "cairo-mutex-list-private.h"
	#undef CAIRO_MUTEX_DECLARE
	}

Note that we're testing _cairo_mutex_initialized but never setting
it. Oops! And presumably these mutex objects don't like being
initialized over and over again.

As soon as someone can report a tested fix, that would be great.

And in the future, if we can get more pre-release testing on win32
hopefully we can better avoid problems like this, (a mingw version of
git looks very viable these days, so that should help). I can also
provide plenty of warning and early tar files to anyone who would want
to pre-screen release tar files for us.

Thanks, and sorry about this one. I really should have noticed that.

-Carl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20070418/84c8e6fa/attachment-0001.pgp


More information about the cairo mailing list