Tcl Source Code

View Ticket
Login
Ticket UUID: bb937366b4cf197080c1818d477cd519f24f3744
Title: macOS Aqua : crash with Tcl_UtfToChar16
Type: Bug Version: 8.7a4
Submitter: sl1200mk2 Created on: 2021-04-30 17:47:14
Subsystem: 44. UTF-8 Strings Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Minor
Status: Closed Last Modified: 2021-05-21 08:00:42
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2021-05-21 08:00:42
Description:
Hi Jan,
using latest core-8-branch of Tcl, some users have reported this crash.
(for the record, it's used withe mac_styles_87 branch merged with glyph_index_2 branch)
do you want me to try to get a more precise crash log or that's enough?

best regards,
nicolas

Date/Time:             2021-04-25 12:15:42.213 +0200
OS Version:            Mac OS X 10.15.7 (19H524)
Report Version:        12
Anonymous UUID:        DA9D897C-AEE6-4088-ADD9-01A638CA0ECC


Time Awake Since Boot: 480 seconds

System Integrity Protection: disabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x00007f9d51000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [578]

VM Regions Near 0x7f9d51000000:
    MALLOC_SMALL           00007f9d50800000-00007f9d51000000 [ 8192K] rw-/rwx SM=PRV  
--> 
    STACK GUARD            00007ffedc29a000-00007ffedfa9a000 [ 56.0M] ---/rwx SM=NUL  stack guard for thread 0

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   Tcl                           	0x000000010feacf64 Tcl_UtfToChar16 + 4
1   Tk                            	0x000000010ff90ff3 0x10ff56000 + 241651
2   Tk                            	0x000000011002a467 0x10ff56000 + 869479
3   Tk                            	0x000000011003983c 0x10ff56000 + 931900
4   Tk                            	0x0000000110042b7b 0x10ff56000 + 969595
5   Tcl                           	0x000000010fdc3843 0x10fda3000 + 133187
6   Tcl                           	0x000000010fdbf86a Tcl_EvalObjv + 378
7   Tcl                           	0x000000010fdc114b 0x10fda3000 + 123211
8   Tcl                           	0x000000010fdc067a Tcl_EvalEx + 26
9   Tk                            	0x000000010ff60db5 Tk_BindEvent + 6373
10  Tk                            	0x000000010ff68538 TkBindEventProc + 360
11  Tk                            	0x000000010ff7076e Tk_HandleEvent + 974
12  Tk                            	0x000000010ff70eb4 0x10ff56000 + 110260
13  Tcl                           	0x000000010fe8283c Tcl_ServiceEvent + 156
14  Tcl                           	0x000000010fe82b48 Tcl_DoOneEvent + 392
15  Tk                            	0x000000010ff713db Tk_MainLoop + 43
16  Tk                            	0x000000010ff82adc Tk_MainEx + 1452
17  com.LightingStudioDevice.DLight	0x000000010fb8a7cc main + 300
User Comments: sl1200mk2 added on 2021-05-12 16:34:50:
Hi Jan,
the crash didn't pop up since your fix.

thanks,
++

jan.nijtmans added on 2021-05-07 21:04:09:

This should be fixed now, in the latest commif of the "glyph_index_2" branch.


sl1200mk2 added on 2021-05-05 13:15:34:
I finally got it... in a version of Tk that do contains recent François fix
I was just trying to insert 21 in a ttk::entry embedded in a tableList
 
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   Tcl                           	0x0000000101902d44 Tcl_UtfToChar16 + 4
1   Tk                            	0x00000001019e6663 TkUtfAtIndex + 67
2   Tk                            	0x0000000101a68549 InsertChars + 41
3   Tk                            	0x0000000101a67577 EntryInsertCommand + 103
4   Tk                            	0x0000000101a75a56 Ttk_InvokeEnsemble + 166
5   Tk                            	0x0000000101a7ce3b WidgetInstanceObjCmd + 75
6   Tcl                           	0x0000000101827660 Dispatch + 176
7   Tcl                           	0x0000000101824973 TclNRRunCallbacks + 115
8   Tcl                           	0x00000001018247da Tcl_EvalObjv + 42
9   Tcl                           	0x00000001018257b8 TclEvalEx + 2104
10  Tcl                           	0x0000000101824f7a Tcl_EvalEx + 26
11  Tk                            	0x00000001019bad01 Tk_BindEvent + 3137
12  Tk                            	0x00000001019c30de TkBindEventProc + 382
13  Tk                            	0x00000001019ca9ec Tk_HandleEvent + 460
14  Tk                            	0x00000001019cb3a0 WindowEventProc + 96
15  Tcl                           	0x00000001018db74c Tcl_ServiceEvent + 156
16  Tcl                           	0x00000001018dba38 Tcl_DoOneEvent + 376
17  Tk                            	0x00000001019cb87b Tk_MainLoop + 43
18  Tk                            	0x00000001019d9857 Tk_MainEx + 1255
19  com.LightingStudioDevice.DLight	0x00000001015cc61c main + 124 (main.c:783)
20  libdyld.dylib                 	0x00007fff2071ff3d start + 1


++

sl1200mk2 added on 2021-05-04 14:54:56:
Hi François,
I did what you suggest (with latest mac_styles_87 + glyph_index_2 branch) but we were not able to reproduce it...
I didn't kept Tcl/Tk versions that were used when the crash happens, sorry...

++

fvogel added on 2021-05-04 06:07:52:

You could also try to revert the fix [fee2e853] in ttk::entry and possibly get the crash back (if it's the cause).


jan.nijtmans added on 2021-05-03 19:50:23:

François's fix indeed fixed an index underflow in ttk::entry, so this might very well be the cause. Thanks for letting us know. If it cannot be reproduced any more, this one can be closed as duplicate. I'll wait a little bit to be sure.


sl1200mk2 added on 2021-05-03 16:30:21:
Hi Jan,
after a day of (hard) trying the crash did not occurs again.
It was related to a ttk::entry, so I wonder if François's recent fix did solve the issue...

the guy that have the computer that's crashing will try again tomorrow.

++

sl1200mk2 added on 2021-05-02 16:27:20:
Hi Jan,
yes I've understood.
I'll send versions of my app compiled as debug and report here.

++

jan.nijtmans added on 2021-05-02 16:17:23:

There are two Tcl_UtfToUniChar() calls (which is actually Tcl_UtfToChar16() when TCL_UTF_MAX=3) in TkUniCharToUtf(). But there are 16 TkUniCharToUtf() calls in (generic part of) Tk, so it would help if I knew which of those 16 calls is responsible for this crash.


fvogel added on 2021-05-01 17:13:21:
Oops, forget about this. That call is for Tcl_UtfToChar16DString. Sorry.

fvogel added on 2021-05-01 17:12:13:

Well, Tcl_UtfToChar16 is called at exactly one place in Tk 8.7.


jan.nijtmans added on 2021-05-01 16:53:59:

Thanks, Nicolas.

Well, I don't think this is a Tcl 8.7 bug, most likely Tcl_UtfToChar16 is called with a non-null-terminated string without the proper protection. That's Tk's fault. I previously mentioned that glyph_index_2 is not production-ready yet, that's the branch I suspect is containing the bug. Does the mac_styles_87 branch as-is have the same problem? If not, that's proof of my theory. Yes, I would like a stack-trace, so I can see at least where in Tk the Tcl_UtfToChar16 call is located.