Skip Menu |

From: Ken Raeburn <>
Date: Tue, 14 Dec 2004 23:00:22 -0500
Subject: profile iterator can see inconsistent data if file independently modified
Download (untitled) / with headers
text/plain 1.1KiB
If the config file is modified on disk while the iterator code is
walking over the data, the profile code will re-read the file, build a
new node tree, and next time the iterator is used, it will again look
up the sequence of names it's using, and walk forward to the Nth
entry under that name, when it kept track that it was on the Nth entry
in the old version of the file.

More sensible, probably, would be to keep a handle on the old data, so
that we don't return a mix of new data and old. A new ref count, a
new mutex, and a new level of indirection can do this. Sounds simple
enough, but consider too how this might interact with a program that
is itself trying to make modifications. Contemplate the horror of
multiple threads trying to iterate and make modifications to the same
data at once. Then run screaming into the night, while race
conditions hiss and growl as they claw their way out of the pit,
sniffing at the air to catch the scent of the dangling pointers you
leave behind as... oh, sorry.

Should a modification attempt fail if the library knows that the
on-disk data has been modified? Should we just ignore the disk
changes and overwrite it? Etc.