Opened 17 years ago

Closed 17 years ago

#1883 closed defect (fixed)

Threading issue with OGR MI_TAB driver

Reported by: ksgeograf Owned by: warmerdam
Priority: normal Milestone: 1.4.3
Component: OGR_SF Version: 1.4.2
Severity: normal Keywords: mitab threading
Cc: Daniel Morissette


I have discovered and fixed a problem with the MI_TAB part of OGR. The problem occurs when OGR is used in a threaded environment (such as the MapGuide Server).

In mitab_datfile.cpp the functions ReadCharField and ReadDateField both use a static allocated buffer to return the results. This causes memory violations when one thread is reading the buffer and another is writing it.

The fix is simple, just add a member variable that can act as buffer, and remove the statically allocated buffers. This gives a slight overhead in memory consumption, but enables threading.

The attached DIFF file can be used to patch the gdal/ogr version found in the MapGudie Server svn trunk (don't now the exact version used there).

Attachments (1)

OGR TAB ThreadFix.diff (2.4 KB ) - added by ksgeograf 17 years ago.
Diff file, to be used against the MapGuide Server Trunk version

Download all attachments as: .zip

Change History (3)

by ksgeograf, 17 years ago

Attachment: OGR TAB ThreadFix.diff added

Diff file, to be used against the MapGuide Server Trunk version

comment:1 by warmerdam, 17 years ago

Cc: Daniel Morissette added
Status: newassigned

I'll take care of this in OGR and upstream in MITAB when I get back tomorrow.

comment:2 by warmerdam, 17 years ago

Resolution: fixed
Status: assignedclosed

Applied upstream in MITAB, so it should appear in MITAB 1.6.3-beta2.

gdal/ogr/ogrsf_frmts/mitab in trunk refreshed from upstream as r12358.

Minimal patch applied in 1.4 branch as r12359.

Note: See TracTickets for help on using tickets.