Comments (5)
@jelledevleeschouwer Is this something you can take a look at?
from picotcp.
Seems like it has something to do with DNS:
[Wed Oct 23 10:54:10.352 2019] DNS: sending query to 08080808
[Wed Oct 23 10:54:10.352 2019] Allocated buffer @200104b8, len= 93 caller: 00000000
[Wed Oct 23 10:54:10.352 2019] DEBUG MEMORY: 15 frames in use.
[Wed Oct 23 10:54:10.352 2019] ================= ARP REQUIRED: 1 =============
[Wed Oct 23 10:54:10.372 2019]
[Wed Oct 23 10:54:10.372 2019] Allocated buffer @200105b0, len= 42 caller: 00000000
[Wed Oct 23 10:54:10.372 2019] DEBUG MEMORY: 16 frames in use.
[Wed Oct 23 10:54:10.372 2019] QUERY: 0300000a
[Wed Oct 23 10:54:10.372 2019] Sending arp request.
[Wed Oct 23 10:54:10.372 2019] Discarded buffer @200105b0, caller: 00000000
[Wed Oct 23 10:54:10.388 2019] DEBUG MEMORY: 15 frames in use.
[Wed Oct 23 10:54:10.784 2019] Allocated buffer @200105b0, len= 342 caller: 00000000
[Wed Oct 23 10:54:10.803 2019] DEBUG MEMORY: 16 frames in use.
[Wed Oct 23 10:54:10.803 2019] No such port 67
[Wed Oct 23 10:54:10.803 2019] Discarded buffer @200105b0, caller: 00000000
[Wed Oct 23 10:54:10.803 2019] DEBUG MEMORY: 15 frames in use.
from picotcp.
@jelledevleeschouwer @danielinux
Seems like the problem is that 'pico_arp_queued_trigger' isn't called besides in 'pico_arp_add_entry'.
DNS query causes an ARP requirement, but when there is no incoming ARP communication, the frame and allocated buffer isn't discarded (as the ARP has been postponed, but the 'pico_arp_queued_trigger' is never called). I keep trying the DNS query, so the memory is 'empty' very fast.
Where should we call 'pico_arp_queued_trigger', or how should we solve this?
from picotcp.
@ThomasNauwelaerts, are you really sure that is your problem and not the postpone itself? I see something fishy in the pico_ethernet_send()
function where the pico_arp_postpone()
is called in which a frame is actually added to the frames_queued array. Could you please retest with the branch "dev_master_memleak"?
from picotcp.
@jelledevleeschouwer, I had a quick look at the solution you provided. I think it should work, but I'm unable to test this at the moment, sorry.
I already found a solution. Please find the patch below:
pico_arp_patch.txt
I added 'PICO_MAX_FAILURE_COUNT', to make this max count more safe.
I added 'pico_arp_queued_trigger' in the function 'pico_arp_get', so before adding a new request, existing requests are triggered.
I added
else { pico_frame_discard(f); }
in 'pico_arp_postpone', to make sure the frame is discarded when the failure is greater than max. This is needed, as the function calling the postpone cannot decide to discard the frame.
from picotcp.
Related Issues (20)
- pico_socket_read() with timeout HOT 1
- pico_ipv4_route_add() is not correctly adding the gateway HOT 1
- Memory leak in SNTP sync HOT 3
- RAW_SOCKET pendant? HOT 2
- TFTP retries not working
- README.md: GPL LICENSE problem HOT 2
- tcpecho refuses connection ... HOT 1
- tcpopt_len_check will stop the stack when option length is 0 HOT 1
- Question: How many times pico_stack_tick() should be called HOT 3
- No 'extern "C"' support in headers HOT 2
- Best way to report security issues HOT 1
- Use picotcp without sockets? HOT 2
- security contact
- connect tcpserver and tcpclient via taps interface
- send from tcpclient and receive in tcpserver
- picoapp icmp6 ping failed
- Reassigned a value before the old one has been used.
- Checking if unsigned variable is less than zero.
- Weak references not working correctly under Windows with MinGW HOT 1
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 picotcp.