Comments (8)
Yeah that sounds very useful. Is it ported to all platforms?
Why enabling by default? Is it just to make it more visible? Then I simply add a documentation and tutorial page on the wiki https://github.com/sics-iot/contiki/wiki
BTW, the project name is spelled with a "-": Contiki-NG
from contiki-ng.
Is it ported to all platforms?
No, but I could do all platforms that Contiki-NG supports - except Cooja mote and native, I suppose.
Why enabling by default? Is it just to make it more visible?
Ideally, I would like to have an additional line in George's unified main()
that periodically does the stack integrity check and sends the system in a panic mode if that fails. (Similar to what AVR platforms alreayd have in Contiki.) Basically this is to save people's time ("my program was crashing for some reason and I had no idea why for a week, after which I finally decided to enable this feature and saw the problem" vs. "stack overflow has been detected, which followed by a crash")
If there is no check in the main, then I'm probably ok with having it disabled by default. There still are some small benefits, like this (quoting myself):
Just the fact itself that the stack is filled with 0xcd sometimes does make a difference - it can be helpful when looking at memory dumps in mspsim or by using gdb a big region of 0xcd will clearly indicate untouched stack
(This second part is more speculative, but...) it could also be seen as a security feature, and evidence that Contiki is a robustly designed OS. I mean - it could make the system less vulnerable to attacks which aim to corrupt the global memory in some targeted way. As example, think of a function that has a large stack buffer, which is filled with data coming from an untrusted source - e.g. a packet coming from the network. If the buffer overlaps with some static memory at the runtime, that static memory could be changed in a specific way by just sending the right packet to the node.
from contiki-ng.
ok, we might consider enabling by default, happy to hear what others have to say.
What is the overhead, roughly?
from contiki-ng.
I do not feel strongly about either option, I can see benefits in both
from contiki-ng.
What is the overhead, roughly?
For checking the memory, one byte at a time, it takes around 0.2 milliseconds to check 1000 bytes of RAM on CC2650. Do you think that doing this once per second would be acceptable? Once 10 seconds? Minute?
from contiki-ng.
Maybe once every 10 seconds. I don't know
from contiki-ng.
every 10 should work - and I guess default on but documentation on how to turn of should be ok!
from contiki-ng.
Closed in #192
from contiki-ng.
Related Issues (20)
- Adafruit Feather nRF52840 Sense
- Are there any resources or documentation that provide power consumption characteristics of Cooja motes, similar to real hardware.
- lwm2m: Accessing uninitialized local variables
- Custom fault handler/stack dumping, watchdog bug
- nrf platform: native USB dropping data due to buffer size being too small
- plot PDR HOT 1
- The last node joined HOT 1
- Objective function
- Same received/sending packets number ( calculate PDR problm)
- Large network probing issue
- Compilation issue on contiki-ng HOT 1
- Change ETX to RSSI
- Use RSSI as objective function
- Multicast packet Hop Limit decreased HOT 4
- SNR HOT 1
- RPL parent rank bug HOT 1
- Off-Tree development HOT 1
- CoAP IPv4 Endpoints
- Border Router does not work on Nordic nRF52840 HOT 2
- I could not found os/services/channel-selection in channel selection demo 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 contiki-ng.