-
Notifications
You must be signed in to change notification settings - Fork 7.5k
Mesh network traffic overflow ungraceful stop. (MMFAR Adress: 0x0) #14714
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@WilliamGFish can you enable |
Are you able to get a backtrace of where exactly the |
@jhedberg right, but doesn't really make sense because we don't use |
Made changes as suggested and results are (minor editting): [00:07:42.128,662] [1;33m bt_mesh_transport: Replay: src 0x0005 dst 0xc000 seq 0x0006eb[0m [00:07:42.289,306] [1;31m bt_mesh_net: Out of relay buffers[0m [00:07:42.498,870] [1;31m bt_mesh_net: Out of relay buffers[0m Data Access Violation MMFAR Address: 0x0 ***** Hardware exception ***** Current thread ID = 0x20003358 Fatal fault in ISR! Spinning... |
@carlescufi host doesn't use dlist directly either. A couple of kernel functionalities that do use dlist (based on git grep), which we end up using indirectly: scheduler, timers, k_poll. |
@WilliamGFish can you try to get a backtrace if possible as @jhedberg suggested to see who is calling that function? |
I do my best, a newbie regards this. Using Ozone so I'll find out what i can. |
@WilliamGFish sure, thanks for all the info so far! We really appreciate any help trying to figure out what the issue is. On Ozone you should have a View -> Call Stack menu you can use. |
This could be useful, the call stack post crash updated when clicking with:
// |
Looks like some scheduling issue? I remember there being another one not so long ago where a list was pointing back to itself, resulting in an infinite loop. I wonder if this was fixed. @WilliamGFish are you using latest master? |
Just did a fetch from Master this morning and again now. ***** Booting Zephyr OS v1.14.0-rc1-1366-gcb44b7e76861 ***** |
@WilliamGFish I think #12726 is the other issue I was thinking of - the use case sounds quite similar as well |
I have fetched the latest commits and have run three (3) boards for several hours and the issue no long appears to arise. I suspect that it was 66d339a that resolved the underlying problem. If the issue resurfaces i shall reopen. |
@WilliamGFish thank you very much for getting back to this and closing it. |
When running a BLE Mesh with high interactivity program throws an unhandled exception, whilst pushing the boundaries of radio/network traffic saturation.
It appears that when the either the RX or TX buffer are overloaded they are unable to process acknowledgement messages therefore moves to remove them from list (dlist.h: sys_dlist_remove). Unfortunately there may be a NULL pointer to list node.
Consistently points to failing at:
//
static inline void sys_dlist_remove(sys_dnode_t *node)
{
node->prev->next = node->next; {fails at this point, see below}
node->next->prev = node->prev;
sys_dnode_init(node);
}
//
To Reproduce
Devices used 2x nrf52-PCA10040, nrf52840-PCA10056 and Particle Boron
Similar issues with BBC Micro-bit yet unable to debug
Steps to reproduce the behaviour:
I have increased the buffer sizes and RX & TX settings which only delayed failure.
CONFIG_BT_MESH_ADV_BUF_COUNT=256
CONFIG_BT_MESH_TX_SEG_MAX=32
CONFIG_BT_MESH_TX_SEG_MSG_COUNT=24
CONFIG_BT_MESH_RX_SDU_MAX=384
CONFIG_BT_MESH_RX_SEG_MSG_COUNT=24
Expected behaviour
Gracefully catch error rather than "crash"
Impact
This is but an annoyance and potential showstopper as with larger number of nodes stressed networks will be increasing likely.
Environment (please complete the following information):
Screenshots or console output
Debugged failure
***** MPU FAULT *****
Data Access Violation
MMFAR Address: 0x0
***** Hardware exception *****
Current thread ID = 0x20003360
Faulting instruction address = 0x13b44
Fatal fault in ISR! Spinning...
Original pre-debug (consistent address across 2 boards)
***** MPU FAULT *****
Data Access Violation
MMFAR Address: 0x0
***** Hardware exception *****
Current thread ID = 0x2000228c
Faulting instruction address = 0xe174
Fatal fault in ISR! Spinning...
The text was updated successfully, but these errors were encountered: