| Deutsch English Français Italiano |
|
<vaa0mr$r09k$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Harald Oehlmann <wortkarg3@yahoo.com>
Newsgroups: comp.lang.tcl
Subject: Re: Crash in Itcl when using Iwidgets in multiple threads
Date: Fri, 23 Aug 2024 14:52:43 +0200
Organization: A noiseless patient Spider
Lines: 58
Message-ID: <vaa0mr$r09k$1@dont-email.me>
References: <va9vc0$thcj$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 23 Aug 2024 14:52:44 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3742298ef5c040b6e7dd2dfb84c1ea47";
logging-data="885044"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+nYi7VZ/XGoB3J0T5UFWPd"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:syFblltHly8JAs5TCtK31pZ2HpA=
Content-Language: en-GB
In-Reply-To: <va9vc0$thcj$1@dont-email.me>
Bytes: 2928
Am 23.08.2024 um 14:29 schrieb Petro Kazmirchuk:
> Minimal example:
>
> package require Thread
>
> set thread_script {
> package require Iwidgets
> iwidgets::pushbutton .btn -text [thread::id]
> pack .btn
> after 4000 [list thread::release [thread::id]]
> thread::wait
> }
>
> for {set i 0} {$i<1000} {incr i} {
> thread::create -preserved $thread_script
> after 500
> }
>
> This code runs 8 threads in parallel each showing an iwidget (pushbutton
> or anything else, doesn't matter) and after ~1 minute it crashes with:
>
> Unhandled exception at 0x00007FF8846DA6E4 (itcl424t.dll) in
> tclsh86t.exe: 0xC0000005: Access violation reading location
> 0x0000000000000018.
>
> Windows, Tcl 8.6.14, Itcl 4.2.4, Itk 4.2.6, Iwidgets 4.1.
> The same crash happens when using the Itk written in pure Tcl:
> https://chiselapp.com/user/rene/repository/itk/home
>
> That's why I'm convinced the problem is in Itcl rather than Itk, and the
> stack trace points to Itcl as well. Probably, there is a mutex missing
> somewhere.
>
> I didn't try to reproduce it on Linux.
>
> I understand that both Iwidgets and Itcl are legacy that is barely
> maintained, that's why I'm not raising a bug in Fossil that very few
> people would notice. What I'm asking instead from a much wider audience
> here is for a workaround. Is it possible to change my code somehow to
> avoid the crash? Of course, preserving the basic multi-threaded
> architecture.
>
> The original code is a huge framework that can't be rewritten to
> separate GUI into one main thread.
>
> Thanks in advance,
> Petro
Petro,
if you look here:
https://core.tcl-lang.org/itcl/timeline?udc=1&ss=v&n=&y=all&advm=0
ITCL has commits two days ago. So, there is some care.
It is a bundled package.
So it would be great to file a bug report.
Thanks,
Harald