-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Closed
Labels
area: BluetoothbugThe issue is a bug, or the PR is fixing a bugThe issue is a bug, or the PR is fixing a bugpriority: lowLow impact/importance bugLow impact/importance bug
Description
Describe the bug
I created two Bluetooth Mesh nodes to put them in the same network. I use the serial to control one of the nodes to send packets to another node. Send the next packet immediately after receiving a reply from another node or a 5 second timeout. When I tested about 800 times, the node could not continue to respond to my serial commands. I used gdb to check the current running status. The information is as follows.
To Reproduce
Steps to reproduce the behavior:
- cmake -DBOARD="nrf52_pca10040" ../..
- make
- See error
**gdb debug log**
(gdb)
_priq_dumb_add (pq=pq@entry=0x200019ac <_kernel+40>,
thread=thread@entry=0x2000064c <adv_thread_data>)
at /home/ubuntu/zephyr/kernel/sched.c:574
574 SYS_DLIST_FOR_EACH_CONTAINER(pq, t, base.qnode_dlist) {
(gdb) l
569 {
570 struct k_thread *t;
571
572 __ASSERT_NO_MSG(!_is_idle(thread));
573
574 SYS_DLIST_FOR_EACH_CONTAINER(pq, t, base.qnode_dlist) {
575 if (_is_t1_higher_prio_than_t2(thread, t)) {
576 sys_dlist_insert_before(pq, &t->base.qnode_dlist,
577 &thread->base.qnode_dlist);
578 return;
(gdb) l
579 }
580 }
581
582 sys_dlist_append(pq, &thread->base.qnode_dlist);
583 }
584
585 void _priq_dumb_remove(sys_dlist_t *pq, struct k_thread *thread)
586 {
587 __ASSERT_NO_MSG(!_is_idle(thread));
588
(gdb) s
575 if (_is_t1_higher_prio_than_t2(thread, t)) {
(gdb) bt
#0 _priq_dumb_add (pq=pq@entry=0x200019ac <_kernel+40>,
thread=thread@entry=0x2000064c <adv_thread_data>)
at /home/ubuntu/zephyr/kernel/sched.c:575
#1 0x0001ab06 in _add_thread_to_ready_q (thread=0x2000064c <adv_thread_data>)
at /home/ubuntu/zephyr/kernel/sched.c:311
#2 0x0001b4f8 in z_clock_announce (ticks=<optimized out>)
at /home/ubuntu/zephyr/kernel/timeout.c:194
#3 0x00004bc2 in _isr_wrapper ()
at /home/ubuntu/zephyr/arch/arm/core/isr_wrapper.S:120
(gdb) s
_is_t1_higher_prio_than_t2 (t2=0x2000064c <adv_thread_data>,
t1=0x2000064c <adv_thread_data>) at /home/ubuntu/zephyr/kernel/sched.c:91
91 if (t1->base.prio < t2->base.prio) {
(gdb) p t2->base.prio
$1 = -9 '\367'
(gdb) p t1->base.prio
$2 = -9 '\367'
(gdb) s
_priq_dumb_add (pq=pq@entry=0x200019ac <_kernel+40>,
thread=thread@entry=0x2000064c <adv_thread_data>)
at /home/ubuntu/zephyr/kernel/sched.c:574
574 SYS_DLIST_FOR_EACH_CONTAINER(pq, t, base.qnode_dlist) {
(gdb) p pq
$3 = (sys_dlist_t *) 0x200019ac <_kernel+40>
(gdb) p pq->next
$4 = (struct _dnode *) 0x20000b5c <prio_recv_thread_data>
(gdb) p pq->next->next
$5 = (struct _dnode *) 0x20000550 <tx_thread_data>
(gdb) p pq->next->next->next
$6 = (struct _dnode *) 0x2000064c <adv_thread_data>
(gdb) p pq->next->next->next->next
$7 = (struct _dnode *) 0x2000064c <adv_thread_data>
(gdb) p pq->next->next->next->next->next
$8 = (struct _dnode *) 0x2000064c <adv_thread_data>
(gdb) p t
$9 = (struct k_thread *) 0x2000064c <adv_thread_data>
(gdb)
Metadata
Metadata
Assignees
Labels
area: BluetoothbugThe issue is a bug, or the PR is fixing a bugThe issue is a bug, or the PR is fixing a bugpriority: lowLow impact/importance bugLow impact/importance bug