Comments (5)
Ok, an error in the external call to syslog() seemed very suspicous and a bug in there quite unlikely.
So my suspicion was that there is probably some stack corruption earlier. And adding some printf()s often moved the segfault to other locations.
It seems that there is some length check missing for v = &uvifs[numvifs++];
in find_vif()s
. uvifs has MAXMIFS = 32 elements and I have more than 32 interfaces. With an added printf() I could confirm that find_vif() increased numvifs to 37 and returned the non-existent &uvifs[37] shortly before crashing.
Disabling interfaces via "phyint <iface> disable;" in the config file does not help as it seems that find_vif() is called for all interfaces regardless of their usage.
I guess back in 2001 people thought no one would ever have more than 32 interfaces on a single system :-).
from pim6sd.
Heh, classic. I fixed this in pimd over ten years ago π ... oh how this little puppy need some tender love and care.
I'll look into fixing this bug later today (after work) when I'll port the pimd --disable-vifs
from #4.
from pim6sd.
There, with the discovery in #4 and fixes on master you should be set to go. Thank you for taking the time to test pim6sd!
from pim6sd.
Yes, works great! I can't reproduce any segmentation faults with this patch. Thanks a lot β€οΈ!
(One thing I noticed is that having >32 "phyint <iface> disabled;" statements still gives an error on startup. However just using "default_phyint_status disable;" and enabling the two interfaces I need works just fine.)
Also thanks a lot for your swiftness and help with everything π. (I hope @mweinelt and I are not causing any inconveniences. From our side, no need for hurry
from pim6sd.
Cool, good to hear the fix worked! :)
The code really needs more attention, there are too many assumptions that should be explicitly checked and warnings added. I recognize much of it from my restoration of pimd, so bear with me.
No problem, just happy to help out. Really great to have a couple of knowledgeable testers trying things out. I have a couple of other projects that also need attention, but I'm taking this one as a great opportunity to learn IPv6 :-)
from pim6sd.
Related Issues (20)
- Make ; at end of line in .conf file optional
- Convert configuration directives from underscore to dashes
- Missing pim-join-prune in 3 router setup HOT 5
- Not forwarding multicast (Linux kernel (config) issue?) HOT 3
- Timer accuracy is way off HOT 3
- PIM Decapsulation HOT 1
- segfault in age_routes() HOT 6
- undefined reference to `yywrap' HOT 6
- Please Tag a Release HOT 2
- Code cleanup, test on musl libc using Alpine or Void Linux HOT 1
- Protocol not available HOT 4
- crash in make_mld6v2_msg with mld6v2 HOT 6
- Cannot run at the same time as pimd HOT 6
- Seg fault when interface is missing link-local address HOT 2
- Should we default to MLDv2 instead of MLDv1?
- ssm.conf.sample syntax error
- No global addresses available HOT 14
- segfault after ~5 seconds if an interface has no carrier HOT 2
- Potentially broken PIM checksum HOT 3
- RP-Set not refreshing / vanishing PIM bootstrap HOT 11
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 pim6sd.