Menu

#2989 Tk crashes at startup in InitializeEncodingSearchPath

obsolete: 8.5a2
closed-fixed
9
2004-12-01
2004-12-01
No

Here's the stack trace:

00000000()
TclpObjNormalizePath(Tcl_Interp * 0x00000000, Tcl_Obj *
0x00af58c8, int 0) line 2467 + 27 bytes
TclFSNormalizeToUniquePath(Tcl_Interp * 0x00000000,
Tcl_Obj * 0x00af58c8, int 0, void * * 0x0026f4e0) line
1380 + 17 bytes
TclFSNormalizeAbsolutePath(Tcl_Interp * 0x00000000,
Tcl_Obj * 0x00af5880, void * * 0x0026f530) line 385 +
19 bytes
Tcl_FSGetNormalizedPath(Tcl_Interp * 0x00000000,
Tcl_Obj * 0x00af5898) line 1816 + 31 bytes
TclNativeCreateNativeRep(Tcl_Obj * 0x00af5898) line
2860 + 11 bytes
Tcl_FSGetInternalRep(Tcl_Obj * 0x00af5898,
Tcl_Filesystem * 0x10118648 _tclNativeFilesystem) line
1959 + 9 bytes
Tcl_FSGetNativePath(Tcl_Obj * 0x00af5898) line 4129 +
14 bytes
TclpObjStat(Tcl_Obj * 0x00af5898, _stati64 *
0x0026f74c) line 1758 + 15 bytes
Tcl_FSStat(Tcl_Obj * 0x00af5898, _stati64 * 0x0026f74c)
line 1890 + 13 bytes
InitializeEncodingSearchPath(char * * 0x10111b60, int *
0x10111b5c, Tcl_Encoding_ * * 0x10111b64) line 3086 +
13 bytes
TclGetProcessGlobalValue(ProcessGlobalValue *
0x10111b58 encodingSearchPath) line 2805 + 29 bytes
TclGetEncodingSearchPath() line 281 + 10 bytes
MakeFileMap() line 385 + 5 bytes
InitializeEncodingFileMap(char * * 0x10111b80, int *
0x10111b7c, Tcl_Encoding_ * * 0x10111b84) line 3131 + 5
bytes
TclGetProcessGlobalValue(ProcessGlobalValue *
0x10111b78 encodingFileMap) line 2805 + 29 bytes
LoadEncodingFile(Tcl_Interp * 0x00000000, const char *
0x1011bb80) line 1346 + 10 bytes
Tcl_GetEncoding(Tcl_Interp * 0x00000000, const char *
0x1011bb80) line 670 + 13 bytes
Tcl_RegisterConfig(Tcl_Interp * 0x00af5118, const char
* 0x1011bb88, Tcl_Config * 0x1011b890 cfg, const char *
0x1011bb80) line 79 + 11 bytes
TclInitEmbeddedConfigurationInformation(Tcl_Interp *
0x00af5118) line 121 + 24 bytes
Tcl_CreateInterp() line 444 + 9 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ *
0x00000000, char * 0x00291f07, int 1) line 129 + 8 bytes
WinMainCRTStartup() line 330 + 54 bytes

it crashes because it calls/references
(*tclWinProcs->getFileAttributesExProc) which is NULL
because TclWinSetInterfaces has not been called yet.

Discussion

  • Don Porter

    Don Porter - 2004-12-01

    Logged In: YES
    user_id=80530

    please test this possible fix.

    In Tcl_CreateInterp (tclBasic.c)
    right after the call to
    TclInitSubsystems()
    add a call to
    TclpSetInitialEncodings().

     
  • Vince Darley

    Vince Darley - 2004-12-01

    Logged In: YES
    user_id=32170

    That fix solves the problem for me - thanks!

     
  • Vince Darley

    Vince Darley - 2004-12-01

    Logged In: YES
    user_id=32170

    p.s. Another difference I just noticed with the new code is
    that encodings are now case sensitive.

    Before I could do 'fconfigure $chan -encoding macroman', but
    that now gives an error (I need 'macRoman').

    That may well bite a few people, unless fixed.

     
  • Don Porter

    Don Porter - 2004-12-01
     
  • Don Porter

    Don Porter - 2004-12-01
    • status: open --> closed-fixed
     
  • Don Porter

    Don Porter - 2004-12-01

    Logged In: YES
    user_id=80530

    Thanks for the report and the testing.

    Committing a fix for the crash...
    Patch attached.

    Please raise the case sensitivity
    issue in another report.
    It's an example of filesystem
    differences (unintentionally?)
    filtering up to become cross-platform
    issues in scripts. From my (unix)
    perspective, encoding names have
    always been case sensitive.

     
  • Donal K. Fellows

    Logged In: YES
    user_id=79902

    FWIW, from my perspective it was always a bug that encoding
    names were not case sensitive on some platforms. :^)