Matthias Julius schrieb:

>> 0001_removing_unused_gd_images.patch.gz
> 
> This is applied (and a bit more).  Thanks.

Thanks ;)


>> the problem is the GDlib is not thread save...
> 
> I have not tried that one because my knowledge about threading is very
> basic.  So what do you do about GD?

The problem is follow:

the main task init a GD object (a image or other stuff)
now start u two children

both children have now the object into its field of work

Now the children die

child 1 give the gd object free (DESTROY() and give memory free)
child 2 give the gd object free (DESTROY() double free error)

crash

solutions:

u do not use the gd lib befor u call u children
u use the gd lib only insert from u children (not tested)
u use other metods as then gd lib ;) "gd->compare vs crc's"

only living objecte are a problem so:
u destroy all gd lib objects befor u call ur children



> I think the whole forking/threading subject needs rethinking.
> 
> Currently, the forking is done by zoom levels (one fork per zoom level
> maximum) and one layer is processed after the other.  This means that
> for the captionless layer there is only 1 fork (not that there would
> be any work to split up anyway), for maplint there are max. 5 forks
> and for the tile layer there are max. 6 forks.  On top of that the
> workload across the zoom levels es very uneven (z12 will render much
> quicker than z17).

i have writing the days a nonForkedThreading renderer and he was realy faster as
the forked (a finished task get a new job and call not exit ;)
the problem was only the double free error ;/ and many more memory usage (realy
4 working tasks ;)



>> sorry for my bad englich i hope my code is better ;)
>                         ^
> Yeah, this English is really bad ;-)

;)

René





_______________________________________________
Tilesathome mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/tilesathome

Reply via email to