Ticket UUID: | ca4aa4c94dc9986543ee49809725ac206dbbb152 | |||
Title: | Unstable with lots of ttk::labels in subframes in two parents | |||
Type: | Bug | Version: | 8.6.14, 9.0b3 (Windows) | |
Submitter: | jal_frezie | Created on: | 2024-09-10 13:24:14 | |
Subsystem: | 88. Themed Tk | Assigned To: | nobody | |
Priority: | 5 Medium | Severity: | Severe | |
Status: | Open | Last Modified: | 2024-09-10 18:42:22 | |
Resolution: | None | Closed By: | nobody | |
Closed on: | ||||
Description: |
Windows 11: if you have two parents, either frames or toplevels, and in each of them you pack a few thousand frames and a ttk::label in each frame, instability results. The parents may exist but fail to display, and the application may crash. This does not happen if a non-ttk label is used instead. Demo script: foreach home {.a .b} { toplevel $home for {set i 0} {$i<3072} {incr i} { set capt "hello I am variable $i and I have a long caption" pack [ttk::frame $home.frm$i] -fill x -expand 1 pack [ttk::label $home.frm$i.l -text $capt] } } | |||
User Comments: |
fvogel added on 2024-09-10 18:42:22:
Debugger says: Unhandled exception at 0x00007FFBAF028DB7 (CoreMessaging.dll) in tclsh90.exe : 0xE0464645. This happens after the script finished, when trying to move a window. Stack trace: KernelBase.dll!00007ffbb4830612() Inconnu CoreMessaging.dll!00007ffbaf0214c8() Inconnu CoreMessaging.dll!00007ffbaf021438() Inconnu CoreMessaging.dll!00007ffbaf004852() Inconnu CoreMessaging.dll!00007ffbaf028db7() Inconnu CoreMessaging.dll!00007ffbaf0191ee() Inconnu CoreMessaging.dll!00007ffbaefa70fa() Inconnu CoreMessaging.dll!00007ffbaefb2bd4() Inconnu CoreMessaging.dll!00007ffbaefb2a0d() Inconnu CoreMessaging.dll!00007ffbaefb280c() Inconnu CoreMessaging.dll!00007ffbaefc42f5() Inconnu CoreMessaging.dll!00007ffbaef97b17() Inconnu CoreMessaging.dll!00007ffbaefd0933() Inconnu TextInputFramework.dll!00007ffba2bc5557() Inconnu TextInputFramework.dll!00007ffba2bd2a3d() Inconnu TextInputFramework.dll!00007ffba2bd281f() Inconnu TextInputFramework.dll!00007ffba2bd279a() Inconnu msctf.dll!00007ffbb584c4b6() Inconnu msctf.dll!00007ffbb584c3cb() Inconnu TextInputFramework.dll!00007ffba2bcbb7f() Inconnu TextInputFramework.dll!00007ffba2bcb8c4() Inconnu msctf.dll!00007ffbb583e2ba() Inconnu msctf.dll!00007ffbb583bc53() Inconnu msctf.dll!00007ffbb583b787() Inconnu msctf.dll!00007ffbb58480f6() Inconnu user32.dll!00007ffbb4ea6916() Inconnu ntdll.dll!00007ffbb71f4174() Inconnu win32u.dll!00007ffbb46314d4() Inconnu user32.dll!00007ffbb4ea1bef() Inconnu user32.dll!00007ffbb4ea1abc() Inconnu > tcl90.dll!TclpWaitForEvent(const Tcl_Time * timePtr) Ligne 526 C tcl90.dll!Tcl_WaitForEvent(const Tcl_Time * timePtr) Ligne 1351 C tcl90.dll!Tcl_DoOneEvent(int flags) Ligne 986 C tcl9tk90.dll!Tk_MainLoop() Ligne 2127 C tcl90.dll!Tcl_MainExW(__int64 argc, wchar_t * * argv, int(*)(Tcl_Interp *) appInitProc, Tcl_Interp * interp) Ligne 563 C tclsh90.exe!wmain(int argc, wchar_t * * argv) Ligne 144 C [Code externe] jal_frezie added on 2024-09-10 17:02:06: Also it does not matter how they are distributed. I changed my example to create around 6000 frame/label pairs across 16 toplevels. With an 'update' after filling each toplevel, all but the last few appeared, but with no update, none appeared. foreach home {.a .b .c .d .e .f .g .h .i .j .k .l .m .n .o .p} { toplevel $home for {set i 0} {$i<350} {incr i} { set capt "hello I am variable $i and I have a long caption" ttk::frame $home.frm$i ttk::label $home.frm$i.l -text $capt if {$i<4} { pack $home.frm$i -fill both -expand 1 pack $home.frm$i.l } } update } jal_frezie added on 2024-09-10 16:04:28: Interestingly the same thing happens if you create the widgets but do not pack them! oehhar added on 2024-09-10 14:27:44: Hi Jasper, thanks for all the tests. I suppose, you hit a size limit on Windows for X/Y coordinates to something like 65535. This is a known and annoying bug. It should also happen for classic widgets. I suppose, the difference is, that the classig widgets need less space and will hit the limit later. If a Widget on Windows gets over this size, any weired thing may happen including crash, partly display (often at 0,0 absolute position) etc. We are all sorry but we live with that since 30 years... Others are welcomed to comment ! Harald |
