Avoid duplicate names in /proc/registry (which may crash find) ?

Corinna Vinschen corinna-cygwin@cygwin.com
Tue Dec 2 12:08:00 GMT 2008

On Dec  1 21:16, Christian Franke wrote:
> When dirent.d_type support is added to /proc/registry (see attachment), 
> find 4.4.0-3 crashes on keys with duplicate names.
> Testcases:
> $ find-with-d_type \
> /proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ALG/ISV
> $ find-with-d_type \
> /proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Security
> These keys contain a key and a value with the same name and readdir() 
> returns both (with different d_type).
> Possible fix to avoid identical names:
> 1. Put keys and values in different namespaces, e.g.
> /proc/registry/path/name.key
> /proc/registry/path/name.val
> Drawback: Breaks backward compatibility.
> or:
> 2. In readdir(), record the key names in some set<> or hash-table. If (and 
> only if) a duplicate name is detected, return a modified name for the 
> value:
> /proc/registry/path/name
> /proc/registry/path/name%76  ('v')
> Drawback: Slows down readdir, introduces alias name for value.

Some random thoughts:

- Do we really need d_type support in the registry?  How often is
  that actually used?

- If find crashes in this situation, isn't this a bug in find which
  should be fixed in find?

- /proc/registry is a convenience for reading the registry.  Due to some
  funny definitions of the registry it's not a full solution.  You can't
  write this way, you can't even access the "(Default)" key values.
  I personally don't worry if some border cases don't work.  For the
  border cases and for the full access we have regtool.

  Having said that, I really don't know what's the best solution for
  these problems would be.  None of the above ideas are very attractive.
  For instance, in idea 1, the path would actually be


  Shouldn't we rather defer these border cases to regtool?


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

More information about the Cygwin mailing list