--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/8a8b608b-e501-403a-b7a7-0d0bda657e4cn%40googlegroups.com.
<Screenshot 2025-03-09 at 21.40.22.png>
On Mar 9, 2025, at 10:52 PM, 'Michael Knyszek' via golang-nuts <golan...@googlegroups.com> wrote:
I suspect this fact is going to be the most relevant thing to your investigation:
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/b5c236d6-1a90-4776-b33b-1234d0b58e02n%40googlegroups.com.
Thank you for the replies.
Robert, I forgot to mention we verified there are no locks/any sqlite routine that is stuck (using the routines profile).
Michael, thanks I'll have a look. We shall see how the debug deployment will go. I'll also check out your suggestion (problem is this reproduces only at customer env). By the way, the author of sqlite 3 package removed the finalizer for rows but the reason was "redundant call".
Thanks!
You received this message because you are subscribed to a topic in the Google Groups "golang-nuts" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/golang-nuts/uL68-fxg2K4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/2B907B52-C0D4-4C42-8513-95BA4BFF3CF0%40ix.netcom.com.
![]() | |
On Mar 10, 2025, at 1:07 AM, Elad Gavra <gav...@gmail.com> wrote:
This finalizer blocks the runtime's finalizer goroutine
On Mar 19, 2025, at 6:19 AM, Gavra <gav...@gmail.com> wrote:
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/5c7c034d-3bc6-4fe5-82bb-a318310bd82fn%40googlegroups.com.
On Mar 19, 2025, at 6:32 AM, Robert Engels <ren...@ix.netcom.com> wrote:
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/6AABBB52-5BC6-4874-900B-C423E37952C4%40ix.netcom.com.
On Mar 19, 2025, at 6:46 AM, Gavra <gav...@gmail.com> wrote:
Yes, I intend to open a bug for them.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/75da8ea2-c099-483c-969a-ab99a91da2a4n%40googlegroups.com.
Yes, I intend to open a bug for them.I agree that one should not relay on the execution of finalizers. But, the fact that the runtime just piles them up because one package did wrong is outrageous.By the way, I am not sure why but I can see the mfinal routine only when running my program from Goland; When I build it manually the routine is invisible using pprof.
--On Wednesday, 19 March 2025 at 13:38:04 UTC+2 Robert Engels wrote:In fact the code you reference - the close() - does things the Go docs warn specifically not to do.You may be better off using runtime.AddCleanup()On Mar 19, 2025, at 6:32 AM, Robert Engels <ren...@ix.netcom.com> wrote:In principle, I would argue that there is a correctness problem. You should not rely on finalizers ever - they are catches and often optional - so the design relying on finalizers to run is what is broken.In the real world they can make solving certain problems much easier - especially with shared resources. I know Java has deprecated them in lieu of other technologies like Cleaners.On Mar 19, 2025, at 6:19 AM, Gavra <gav...@gmail.com> wrote:--https://github.com/hirochachacha/go-smb2/blob/c8e61c7a5fa7bcd1143359f071f9425a9f4dda3f/client.go#L1063We are looking for why exactly it blocked (probably incorrect ctx) but I think this close should run in a goroutine.--On Wednesday, 19 March 2025 at 12:29:34 UTC+2 Brian Candler wrote:On Wednesday, 19 March 2025 at 09:55:58 UTC Gavra wrote:This finalizer blocks the runtime's finalizer goroutineOut of interest, what made it block? Was the finalizer doing some channel communication, for example?
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/5c7c034d-3bc6-4fe5-82bb-a318310bd82fn%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/6AABBB52-5BC6-4874-900B-C423E37952C4%40ix.netcom.com.
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/75da8ea2-c099-483c-969a-ab99a91da2a4n%40googlegroups.com.
Thanks Michael.My opinion is1. It should be mentioned explicitly in the doc that a blocking finalizer will cause future objects with finalizers to leak. Probably next to the "A single goroutine runs all finalizers for a program..." section.
2. Go should provide a way to know about it when it happens. For example, we could have runtime.LastFinalizer() which returns {StartTime, Trace}. Users may choose to monitor it to detect the issue and its source.
3. I am not sure if it is intentional, but the goroutine dump indicates finq only if debug=1 is used.
4. Maybe we can add pprof/sys to indicate such metrics/potential issues?
5. Regarding the single routine vs multi-routine. Yes, this is clear. Did you consider having a finalizer routine per package? I think this is a significant deficit since it break isolation. Either way, I find providing 1 and 2 sufficient.
Do you want me to start a formal discussion in golang/go or will you take it from here?
Thanks again.