Changes between Initial Version and Version 1 of FAQMiscellaneous


Ignore:
Timestamp:
Apr 22, 2007, 10:49:53 AM (17 years ago)
Author:
Mateusz Łoskot
Comment:

New page for FAQ Misc

Legend:

Unmodified
Added
Removed
Modified
  • FAQMiscellaneous

    v1 v1  
     1= [wiki:FAQ] - Miscellaneous =
     2
     3[[PageOutline(2,,inline)]]
     4
     5== Is the GDAL library thread-safe? ==
     6
     7No. GDAL is not completely thread safe.
     8
     9However for GDAL 1.3.0 much work has been done on making some common scenarios thread safe. In particular for the situation where many threads are reading from GDAL datasets at once should work as long as no two threads access the same [http://www.gdal.org/classGDALDataset.html GDALDataset] object at the same time. However, in this scenario, no threads can be writing to GDAL while others are reading or chaos may ensue.
     10
     11Also, while the GDAL core infrastructure is now thread-safe for this specific case, only a few drivers have been vetted to be thread safe.
     12
     13It is intended that work will continue on improving GDAL's thread safety in future versions.
     14
     15== Does GDAL work in different international numeric locales? ==
     16
     17No. GDAL makes extensive use of ''sprintf()'' and ''atof()'' internally to translate numeric values. If a locale is in effect that modifies formatting of numbers, altering the role of commas and periods in numbers, then PROJ.4 will not work. This problem is common in some European locales.
     18
     19On Unix-like platforms, this problem can be avoided by forcing the use of the default numeric locale by setting the ''LC_NUMERIC'' environment variable to ''C'', e.g.
     20
     21{{{
     22$ export LC_NUMERIC=C
     23$ gdalinfo abc.tif
     24}}}
     25
     26== How do I debug GDAL? ==
     27
     28Various helpful debugging information will be produced by GDAL and OGR if the ''CPL_DEBUG'' environment variable is set to the value ''ON''. Review the documentation for the [http://www.gdal.org/ogr/cpl__error_8h.html CPLDebug()] function for more information on built-in debugging messages.
     29
     30On Unix operating systems GDAL can be built with the ''CFG'' environment variable set to ''debug'' to enable debugger support with the ''-g'' compiler switch.
     31
     32On Windows edit the nmake.opt and ensure ''/Zi'' appears in the ''OPTFLAGS'' variable.
     33
     34== How should I deallocate resources acquainted from GDAL on Windows? ==
     35
     36The safest way to release resources allocated and returned (with ownership transfered to caller) from GDAL library is to use dedicated deallocator function. Deallocators promise to release resources on the right module side, without crossing modules boundaries what usually causes memory access violation errors.
     37
     38 * Example of correct resource deallocation:
     39
     40{{{
     41OGRDataSource* poDS = NULL;
     42
     43// OGRDataSource aquisition made on side of the GDAL module
     44poDS = OGRSFDriverRegistrar::Open( "point.shp", FALSE );
     45
     46// ...
     47
     48// Properly resource release using deallocator function
     49OGRDataSource::DestroyDataSource( poDS );
     50}}}
     51
     52* Example of incorrect resource deallocation:
     53
     54{{{
     55OGRDataSource* poDS = NULL;
     56
     57// OGRDataSource aquisition made on side of the GDAL module
     58poDS = OGRSFDriverRegistrar::Open( "point.shp", FALSE );
     59
     60// ...
     61
     62// Deallocation across modules boundaries.
     63// Here, the deallocation crosses GDAL DLL library and client's module (ie. executable module)
     64delete poDS;
     65}}}
     66
     67More detailed explanation of the problem can be found in the [http://blogs.msdn.com/oldnewthing/archive/2006/09/15/755966.aspx Allocating and freeing memory across module boundaries] article.