Comments (7)
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.
The increase is very slow but look here:
(TestCancellationToken(ct.Token))
(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:
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.
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.
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.
The Memory-Use is now as expected. Perfect :)
But is SonarLint needed for the enduser?
from madb.
Ah, my bad!
I've pushed 2.1.0-beta303
to NuGet which should fix this.
Thanks!
from madb.
Perfekt :)
Thx for this
from madb.
Related Issues (20)
- How to resubscribe DeviceMonitor.DeviceConnected after disposing?
- Crossplatform compatibility HOT 2
- Getting files in directory and modified timestamp
- Is there a function/method monitor for OnDeviceReconnect
- "File doesn't exist" but it exists HOT 1
- System.ArgumentOutOfRangeException: ""
- Send command realtime
- Make DeviceData a partial class for extension
- How to wait for connection?
- Serial number is the connection IP when using adb over WiFi HOT 1
- The buffer length X does not match the expected buffer length for a picture of width W, height H and pixel depth D HOT 2
- Memory leak caused by GetFrameBufferAsync HOT 2
- StartServer hangs
- Filename of Download/Upload with characters other than English/Numbers
- Starting ADB Server results in a dangling process as the server is treated as a child process
- ADBClient changes (singelton is gone) HOT 1
- ADB Command without shell HOT 1
- DeviceMonitor does not work
- Adb commands for windows 7 rooted device not responding.
- GetFrameBufferAsync artefacts
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from madb.