Tcl Source Code

View Ticket
Login
Ticket UUID: 1077005
Title: Tk crashes at startup in InitializeEncodingSearchPath
Type: Bug Version: obsolete: 8.5a2
Submitter: vincentdarley Created on: 2004-12-01 19:24:36
Subsystem: 38. Init - Library - Autoload Assigned To: dgp
Priority: 9 Immediate Severity:
Status: Closed Last Modified: 2004-12-02 05:10:53
Resolution: Fixed Closed By: dgp
    Closed on: 2004-12-01 21:57:59
Description:
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.
User Comments: dkf added on 2004-12-02 05:10:53:
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. :^)

dgp added on 2004-12-02 04:57:59:

File Added - 110906: 1077005.patch

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.

vincentdarley added on 2004-12-02 02:50:19:
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.

vincentdarley added on 2004-12-02 02:45:57:
Logged In: YES 
user_id=32170

That fix solves the problem for me - thanks!

dgp added on 2004-12-02 02:38:40:
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().

Attachments: