Menu

#4973 file normalize breaks C:/Windows/system32/drivers/etc/hosts

obsolete: 8.5.13
open
5
2013-01-09
2011-12-21
No

The problem occurs on Windows 7 64bit and 32bit Tcl (such as ActiveTcl or custom build). I did not check 32bit Windows 7.

On a Windows Vista 32bit this works fine, though.

The problem is file normalize removes the etc part of the path and this makes the path invalid.

% file exists C:/Windows/system32/drivers/etc/hosts
1
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts

Changing the WOW64 does not change the behavior:

% ::twapi::Wow64EnableWow64FsRedirection 0
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts
% ::twapi::Wow64EnableWow64FsRedirection 1
% file normalize C:/Windows/system32/drivers/etc/hosts
C:/Windows/System32/drivers//hosts

Please let me know if I can provide any additional information or if I can help with anything related to this bug.

Discussion

  • Wojciech Kocjan

    Wojciech Kocjan - 2011-12-21

    Small update - changing WOW64 seems to resolve the issue - previous example did not show it as I ran it in same process (and Tcl caches file normalize results):

    % package require twapi ; ::twapi::Wow64EnableWow64FsRedirection 0
    % file normalize C:/Windows/system32/drivers/etc/hosts
    C:/Windows/System32/drivers/etc/hosts

    And in a new process:

    % package require twapi ; ::twapi::Wow64EnableWow64FsRedirection 1
    % file normalize C:/Windows/system32/drivers/etc/hosts
    C:/Windows/System32/drivers//hosts

    So this seems to be an issue with how Windows handles drivers\etc in WOW64 mode.

    Also, when WOW64 is enabled:

    % glob C:/Windows/system32/drivers/etc
    C:/Windows/system32/drivers/etc
    % glob C:/Windows/system32/drivers/e*
    C:/Windows/system32/drivers/en-US
    % glob -type hidden C:/Windows/system32/drivers/e*
    no files matched glob pattern "C:/Windows/system32/drivers/e*"

    So it may be an issue the file is not visible when listing contents of directory.

    With WOW64 disabled:

    % glob C:/Windows/system32/drivers/et*
    C:/Windows/system32/drivers/etc

     
  • Jan Nijtmans

    Jan Nijtmans - 2011-12-21

    Isn't this a duplicate of:
    [Tcl-bugs] [ tcl-Bugs-3092089 ] [file normalize] can remove path components
    ?

    Does the fix suggested there by Mark Garvey work for you?

    Regards,
    Jan Nijtmans

     
  • Jan Nijtmans

    Jan Nijtmans - 2013-01-09

    Similar to 3092089/3587096, but this one is not fixed yet.

     
  • Jan Nijtmans

    Jan Nijtmans - 2013-01-09
    • milestone: 2101542 --> obsolete: 8.5.13
    • assigned_to: vincentdarley --> nijtmans