The docs:

 A single goroutine runs all finalizers for a program, sequentially. If a finalizer must run for a long time, it should do so by starting a new goroutine.”

So the code did not follow the api docs - as apparently the close() is indefinite. 

On Mar 19, 2025, at 6:46 AM, Gavra <gav...@gmail.com> wrote:

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#L1063
We 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 goroutine

Out 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.

--
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+unsubscr...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/75da8ea2-c099-483c-969a-ab99a91da2a4n%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+unsubscr...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/2F569560-220F-4B9E-AEE6-A61C994AA1FC%40ix.netcom.com.

Reply via email to