Created by Jay Pipes and last modified
Get this branch:
bzr branch lp:~jaypipes/drizzle/bugs
Only Jay Pipes can upload to this branch. If you are Jay Pipes please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Jay Pipes

Recent revisions

1253. By Jay Pipes <jpipes@serialcoder>

Fixes LP Bug #500031:

"dbt2 fails with 1024 connections"

After investigation into this, I discovered that there was a
race condition in TemporalFormat::match():

TemporalFormat::_re is the compiled PCRE regular expression object
inside each of the TemporalFormat objects, which are shared
among all threads and live in global scope.

Unfortunately, TemporalFormat::match() was using the member
variable TemporalFormat::_match_vector as its match state.
At high concurrency, this means that the following race
condition could happen:

Thread 1 executes pcre_exec() and finds a match, therefore
populating TemporalFormat::_match_vector of integers
with the position offsets of the matched pieces of the temporal object.

Thread 1, during construction of the Temporal output of
TemporalFormat::match(), uses these _match_vector position
offsets in calling std::string::substr on a copy of the
matched string, essentially "cutting up" the string
into year, month, day, etc.

Thread 2 executes pcre_exec() and also finds a match,
thereby changing TemporalFormat::_match_vector to something

Thread 1 continues trying to use std::string::substr(),
but now uses offsets that are invalid for its string,
thereby producing an out_of_range exception.

The solution is to pull the TemporalFormat::_match_vector
member variable and instead put a function-scope-level
match_vector variable on the stack inside TemporalFormat::match().

1252. By Brian Aker <brian@gaz>

Merge Jay

1251. By Brian Aker <brian@gaz>

Merging in massif option to test-run.pl

1250. By Brian Aker <brian@gaz>

Merge Monty

1249. By Brian Aker <brian@gaz>

Merge Valgrind.

1248. By Brian Aker <brian@gaz>

Merge from Dennis Schoen

1247. By Brian Aker <brian@gaz>

Merge from Padraig

1246. By Brian Aker <brian@gaz>

MErge Padraig

1245. By Brian Aker <brian@gaz>

Merge Jay

1244. By Brian Aker <brian@gaz>

Fixed from Monty.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
This branch contains Public information 
Everyone can see this information.