Giter VIP home page Giter VIP logo

Comments (7)

qmfrederik avatar qmfrederik commented on September 27, 2024

Hi,

I had a quick look at the code and couldn't immediately spot a different code path based on the cancellation token being set (actually, the code never really checks for CancellationToken.None).

Did you run both tests in Debug or Release mode? Do you have an indication of how much memory you see being leaked?

from madb.

 avatar commented on September 27, 2024

The increase is very slow but look here:

unbenannt
(TestCancellationToken(ct.Token))

unbenannt1_debug
(TestCancellationToken(CancellationToken.None))

The Screenshots are both in DEBUG. But i run in Release an got the same Values. I take two memory snapshots (while the memory use increases) and it looks like this:

sdf

And it looks like the "SocketExtensions"-Class could be the Problem.

I think the cancellationToken.Register (row 57 in SocketExtensions.cs) is the probleme. Because every call, the event get registered but never deregistered.

The CancellationTokenRegistration instance that can be used to deregister the callback.
(https://msdn.microsoft.com/en-us/library/dd321635.aspx)

Could btw. also a problem in AdbClient.cs row 296. But never test it^^

from madb.

qmfrederik avatar qmfrederik commented on September 27, 2024

Great catch, thanks! That does indeed seem to be the problem - CancellationToken.Register returns a CancellationTokenRegistration which should be disposed of, something we currently don't do.

I'm trying to find a Roslyn analyzer that catches these kind of exceptions, so I can add them to the project and make sure these kinds of issues don't come up again. It seems that Microsoft.Maintainability.Analyzers (which includes DoNotIgnoreMethodResults) together with SonarLint (which includes "IDisposables" should be disposed
) should do it, but I'm having some issues setting it up.

I'll keep you posted!

from madb.

qmfrederik avatar qmfrederik commented on September 27, 2024

Hi,

I've prepared a PR - #52, and an updated NuGet release, 2.1.0-beta301, that should address this issue.

Can you have a look and let me know if this resolves the issue?

Thanks!

from madb.

 avatar commented on September 27, 2024

The Memory-Use is now as expected. Perfect :)

But is SonarLint needed for the enduser?

unbenannt

from madb.

qmfrederik avatar qmfrederik commented on September 27, 2024

Ah, my bad!

I've pushed 2.1.0-beta303 to NuGet which should fix this.

Thanks!

from madb.

 avatar commented on September 27, 2024

Perfekt :)

Thx for this

from madb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.