Never mind, found a workaround. On Friday, 1 April 2022 at 16:54:46 UTC+1 Joe Brown wrote:
> Hi, > I am using a callback based server (ServerWriteReactor) with streaming and > a callback based client (ClientReadReactor). > > Client reads streamed messages from the server but at some point it > cancels the stream using context.TryCancel() from a separate thread. It > then waits for the final OnDone() callback. > So a simplified sequence might look like: > > <- OnReadInitialMetadataDone() > <- OnReadDone (ok=true) > <- OnReadDone (ok=true) > ... > -> TryCancel() > ... > <- OnReadDone (ok=true) > <- OnReadDone (ok=false) > <- OnDone() > > After OnDone(), within the context of the TryCancel() thread, client's > Chanel & Stub are destroyed.. > Once in a while (regression tests repeat the above in a loop) during > destruction of Channel/Stub, the code hangs for ~10sec (garbage collection > timeout for other environments waiting for resources to be released ?) i > get the leaks: > > > *D0401 iomgr.cc:138] Failed to free 1 iomgr objects before shutdown > deadline: memory leaks are likely* > > *D0401 iomgr.cc:87] LEAKED OBJECT: client:socket=0x0x13f7cc8 013F7D34* > > > > > > > > *E0401 10:12:21.792000000 2180 metadata.cc:253] WARNING: 1 metadata > elements were leakedE0401 10:12:21.792000000 2180 metadata.cc:260] mdelem > 'user-agent' = 'grpc-c++/1.42.0 grpc-c/20.0.0 (windows; chttp2)'E0401 > 10:12:21.792000000 2180 metadata.cc:253] WARNING: 1 metadata elements were > leakedE0401 10:12:21.792000000 2180 metadata.cc:260] mdelem ':authority' = > 'localhost:8008'D0401 10:12:21.792000000 2180 slice_intern.cc:350] > WARNING: 1 metadata strings were leakedD0401 10:12:21.792000000 2180 > slice_intern.cc:356] LEAKED: 67 72 70 63 2d 63 2b 2b 2f 31 2e 34 32 2e 30 > 20 67 72 70 63 2d 63 2f 32 30 2e 30 2e 30 20 28 77 69 6e 64 6f 77 73 3b 20 > 63 68 74 74 70 32 29 'grpc-c++/1.42.0 grpc-c/20.0.0 (windows; chttp2)'D0401 > 10:12:21.792000000 2180 slice_intern.cc:350] WARNING: 1 metadata strings > were leakedD0401 10:12:21.792000000 2180 slice_intern.cc:356] LEAKED: 6c > 6f 63 61 6c 68 6f 73 74 3a 38 30 30 38 'localhost:8008'* > > I am using Window 10, both 32/64 bit clients, gRPC 1.42.0 > Any clues on how to avoid the leaks ? They originate in the core library > code - I do not have control over reference counters holding on to the > socket. > > Thanks. > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/707b78f2-f02b-4ca0-9c79-4c914aec6a7an%40googlegroups.com.
