Jeff Trawick wrote:
What will happen if keys and values in b are NOT from an ancestor of a's pool but b has sufficient lifetime?
I'm debugging a segfault in hash_overlap() when driven by a 3rd party Apache module. Clearly the 3rd party module is misusing apr_table_overlap() because a is from the request pool and b is from pconf, which is in essence a storage leak because pconf shouldn't grow.
I can't explain the actual segfault, though. In the segfaulting scenario, which is very intermittent, some pointers (tree_parent, merge_left) in the hash table created in apr_table_overlap are actually literal strings from the table. These could also be hashes of the strings.
Does anybody understand this code well enough to describe what bad
will happen besides a storage leak in this scenario? pconf isn't
going away, so there doesn't seem to be a storage lifetime problem.
The worst thing that should happen in that scenario is a storage leak. If you can isolate a test case that triggers the problem, please let me know and I'll work on debugging it.
Thanks, Brian
