This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Mesh assert on mesh stack init.

After many reboots, suddenly I got stuck at this error on every boot:

0x0003abd6 in app_error_fault_handler (id=id@entry=16386, pc=267800, info=info@entry=536935768) at .../SDK-15-3/components/libraries/util/app_error_weak.c:100
100	    NRF_BREAKPOINT_COND;
(gdb) bt
#0  0x0003abd6 in app_error_fault_handler (id=id@entry=16386, pc=267800, info=info@entry=536935768) at .../SDK-15-3/components/libraries/util/app_error_weak.c:100
#1  0x0004a7b0 in mesh_assertion_handler (pc=<optimized out>) at .../SDK-mesh-3_2/examples/common/src/assertion_handler_weak.c:54
#2  0x0004161a in get_invalid_bytes (pages=<optimized out>, p_area=<optimized out>) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:397
#3  flash_manager_add (p_manager=p_manager@entry=0x200055f4 <m_flash_manager>, p_config=p_config@entry=0x2000fd88) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:841
#4  0x000452ba in add_flash_manager () at .../SDK-mesh-3_2/mesh/access/src/access.c:699
#5  0x00045304 in access_init () at .../SDK-mesh-3_2/mesh/access/src/access.c:1171
#6  0x00047eb0 in mesh_stack_init (p_init_params=p_init_params@entry=0x2000fddc, p_device_provisioned=p_device_provisioned@entry=0x200040e8 <Mesh::getInstance()::instance+4>) at .../SDK-mesh-3_2/mesh/stack/src/mesh_stack.c:84
#7  0x00036676 in Mesh::init (this=0x200040e4 <Mesh::getInstance()::instance>) at ...

(gdb) f 2
#2  0x0004161a in get_invalid_bytes (pages=<optimized out>, p_area=<optimized out>) at .../SDK-mesh-3_2/mesh/core/src/flash_manager.c:397
397	        NRF_MESH_ASSERT(p_entry < p_end);
(gdb) info locals
pc = <optimized out>
invalid_bytes = 261140
p_end = 0x6e000
p_entry = 0xacc1c
invalid_bytes = <optimized out>
p_end = <optimized out>
p_entry = <optimized out>
pc = <optimized out>

The data that's on the flash pages:

0006E000 = 08 04 10 10 01 00 FF FF 04 00 01 00 04 00 08 00 
0006E010 = 01 00 03 00 01 00 00 00 02 00 02 00 1F 00 01 00 
0006E020 = 02 00 00 10 1E C5 FF FF 06 00 00 30 00 00 00 00 
0006E030 = 8C 84 71 A2 EA 06 BD 45 31 85 E8 C8 12 F5 49 00 
0006E040 = 06 00 00 40 00 00 00 00 95 D0 1A 27 21 7C E5 A6 
0006E050 = AC B8 94 E9 6F 26 A9 2F 06 00 00 50 1F 00 00 00 
0006E060 = 0E 98 D3 FC DF 51 C1 42 9D 3F 8A 49 3C 7F A0 E2 
0006E070 = FF FF FF 7F FF FF FF FF FF FF FF FF FF FF FF FF 
0006F000 = 08 04 10 10 01 00 FF FF 03 00 02 00 00 00 00 00 
0006F010 = 00 00 03 00 02 00 00 00 00 C0 7E 00 02 00 00 00 
0006F020 = 00 E0 7E 00 02 00 00 00 00 00 7F 00 02 00 00 00 
0006F030 = 00 20 7F 00 02 00 00 00 00 40 7F 00 02 00 00 00 
0006F040 = 00 60 7F 00 02 00 00 00 00 80 7F 00 02 00 00 00 
0006F050 = 00 A0 7F 00 02 00 00 00 00 C0 7F 00 02 00 00 00 
0006F060 = 00 E0 7F 00 02 00 00 00 00 00 80 00 02 00 00 00 
0006F070 = 00 20 80 00 02 00 00 00 00 40 80 00 02 00 00 00 
0006F080 = 00 60 80 00 02 00 00 00 00 80 80 00 02 00 00 00 
0006F090 = 00 A0 80 00 02 00 00 00 00 C0 80 00 02 00 00 00 
0006F0A0 = 00 E0 80 00 02 00 00 00 00 00 81 00 02 00 00 00 
0006F0B0 = 00 20 81 00 02 00 00 00 00 40 81 00 02 00 00 00 
0006F0C0 = 00 60 81 00 02 00 00 00 00 80 81 00 02 00 00 00 
0006F0D0 = 00 A0 81 00 02 00 00 00 00 C0 81 00 02 00 00 00 
0006F0E0 = 00 E0 81 00 02 00 00 00 00 00 82 00 02 00 00 00 
0006F0F0 = 00 20 82 00 02 00 00 00 00 40 82 00 02 00 00 00 
0006F100 = 00 60 82 00 02 00 00 00 00 80 82 00 02 00 00 00 
0006F110 = 00 A0 82 00 02 00 00 00 00 C0 82 00 02 00 00 00 
0006F120 = 00 E0 82 00 02 00 00 00 00 00 83 00 02 00 00 00 
0006F130 = 00 20 83 00 02 00 00 00 00 40 83 00 02 00 00 00 
0006F140 = 00 60 83 00 02 00 00 00 00 80 83 00 02 00 00 00 
0006F150 = 00 A0 83 00 02 00 00 00 00 C0 83 00 02 00 00 00 
0006F160 = 00 E0 83 00 02 00 00 00 00 00 84 00 02 00 00 00 
0006F170 = 00 20 84 00 02 00 00 00 00 40 84 00 02 00 00 00 
0006F180 = 00 60 84 00 02 00 00 00 00 80 84 00 02 00 00 00 
0006F190 = 00 A0 84 00 02 00 00 00 00 C0 84 00 02 00 00 00 
0006F1A0 = 00 E0 84 00 02 00 00 00 00 00 85 00 02 00 00 00 
0006F1B0 = 00 20 85 00 02 00 00 00 00 40 85 00 02 00 00 00 
0006F1C0 = 00 60 85 00 02 00 00 00 00 80 85 00 02 00 00 00 
0006F1D0 = 00 A0 85 00 02 00 00 00 00 C0 85 00 02 00 00 00 
0006F1E0 = 00 E0 85 00 02 00 00 00 00 00 86 00 02 00 00 00 
0006F1F0 = 00 20 86 00 02 00 00 00 00 40 86 00 02 00 00 00 
0006F200 = 00 60 86 00 02 00 00 00 00 80 86 00 02 00 00 00 
0006F210 = 00 A0 86 00 02 00 00 00 00 C0 86 00 02 00 00 00 
0006F220 = 00 E0 86 00 02 00 00 00 00 00 87 00 02 00 00 00 
0006F230 = 00 20 87 00 02 00 00 00 00 40 87 00 02 00 00 00 
0006F240 = 00 60 87 00 02 00 00 00 00 80 87 00 02 00 00 00 
0006F250 = 00 A0 87 00 02 00 00 00 00 C0 87 00 02 00 00 00 
0006F260 = 00 E0 87 00 02 00 00 00 00 00 88 00 02 00 00 00 
0006F270 = 00 20 88 00 02 00 00 00 00 40 88 00 02 00 00 00 
0006F280 = 00 60 88 00 02 00 00 00 00 80 88 00 02 00 00 00 
0006F290 = 00 A0 88 00 02 00 00 00 00 C0 88 00 02 00 00 00 
0006F2A0 = 00 E0 88 00 02 00 00 00 00 00 89 00 02 00 00 00 
0006F2B0 = 00 20 89 00 02 00 00 00 00 40 89 00 02 00 00 00 
0006F2C0 = 00 60 89 00 02 00 00 00 00 80 89 00 02 00 00 00 
0006F2D0 = 00 A0 89 00 02 00 00 00 00 C0 89 00 02 00 00 00 
0006F2E0 = 00 E0 89 00 02 00 00 00 00 00 8A 00 02 00 00 00 
0006F2F0 = 00 20 8A 00 02 00 00 00 00 40 8A 00 02 00 00 00 
0006F300 = 00 60 8A 00 02 00 00 00 00 80 8A 00 02 00 00 00 
0006F310 = 00 A0 8A 00 02 00 00 00 00 C0 8A 00 02 00 00 00 
0006F320 = 00 E0 8A 00 02 00 00 00 00 00 8B 00 02 00 00 00 
0006F330 = 00 20 8B 00 02 00 00 00 00 40 8B 00 02 00 00 00 
0006F340 = 00 60 8B 00 02 00 00 00 00 80 8B 00 02 00 00 00 
0006F350 = 00 A0 8B 00 02 00 00 00 00 C0 8B 00 02 00 00 00 
0006F360 = 00 E0 8B 00 02 00 00 00 00 00 8C 00 02 00 00 00 
0006F370 = 00 20 8C 00 02 00 00 00 00 40 8C 00 02 00 00 00 
0006F380 = 00 60 8C 00 02 00 00 00 00 80 8C 00 02 00 00 00 
0006F390 = 00 A0 8C 00 02 00 00 00 00 C0 8C 00 02 00 00 00 
0006F3A0 = 00 E0 8C 00 02 00 00 00 00 00 8D 00 02 00 00 00 
0006F3B0 = 00 20 8D 00 02 00 00 00 00 40 8D 00 02 00 00 00 
0006F3C0 = 00 60 8D 00 02 00 00 00 00 80 8D 00 02 00 00 00 
0006F3D0 = 00 A0 8D 00 02 00 00 00 00 C0 8D 00 02 00 00 00 
0006F3E0 = 00 E0 8D 00 02 00 00 00 00 00 8E 00 02 00 00 00 
0006F3F0 = 00 20 8E 00 02 00 00 00 00 40 8E 00 02 00 00 00 
0006F400 = 00 60 8E 00 02 00 00 00 00 80 8E 00 02 00 00 00 
0006F410 = 00 A0 8E 00 02 00 00 00 00 C0 8E 00 02 00 00 00 
0006F420 = 00 E0 8E 00 02 00 00 00 00 00 8F 00 02 00 00 00 
0006F430 = 00 20 8F 00 02 00 00 00 00 40 8F 00 02 00 00 00 
0006F440 = 00 60 8F 00 02 00 00 00 00 80 8F 00 02 00 00 00 
0006F450 = 00 A0 8F 00 02 00 00 00 00 C0 8F 00 02 00 00 00 
0006F460 = 00 E0 8F 00 02 00 00 00 00 00 90 00 02 00 00 00 
0006F470 = 00 20 90 00 02 00 00 00 00 40 90 00 02 00 00 00 
0006F480 = 00 60 90 00 02 00 00 00 00 80 90 00 02 00 00 00 
0006F490 = 00 A0 90 00 02 00 00 00 00 C0 90 00 02 00 00 00 
0006F4A0 = 00 E0 90 00 02 00 00 00 00 00 91 00 02 00 00 00 
0006F4B0 = 00 20 91 00 02 00 00 00 00 40 91 00 02 00 00 00 
0006F4C0 = 00 60 91 00 02 00 00 00 00 80 91 00 02 00 00 00 
0006F4D0 = 00 A0 91 00 02 00 00 00 00 C0 91 00 02 00 00 00 
0006F4E0 = 00 E0 91 00 02 00 00 00 00 00 92 00 02 00 00 00 
0006F4F0 = 00 20 92 00 02 00 00 00 00 40 92 00 02 00 00 00 
0006F500 = 00 60 92 00 02 00 00 00 00 80 92 00 02 00 00 00 
0006F510 = 00 A0 92 00 02 00 00 00 00 C0 92 00 02 00 00 00 
0006F520 = 00 E0 92 00 02 00 00 00 00 00 93 00 02 00 00 00 
0006F530 = 00 20 93 00 02 00 00 00 00 40 93 00 02 00 00 00 
0006F540 = 00 60 93 00 02 00 00 00 00 80 93 00 02 00 00 00 
0006F550 = 00 A0 93 00 02 00 00 00 00 C0 93 00 02 00 00 00 
0006F560 = 00 E0 93 00 02 00 00 00 00 00 94 00 02 00 00 00 
0006F570 = 00 20 94 00 02 00 00 00 00 40 94 00 02 00 00 00 
0006F580 = 00 60 94 00 02 00 00 00 00 80 94 00 02 00 00 00 
0006F590 = 00 A0 94 00 02 00 00 00 00 C0 94 00 02 00 00 00 
0006F5A0 = 00 E0 94 00 02 00 00 00 00 00 95 00 02 00 00 00 
0006F5B0 = 00 20 95 00 02 00 00 00 00 40 95 00 02 00 00 00 
0006F5C0 = 00 60 95 00 02 00 00 00 00 80 95 00 02 00 00 00 
0006F5D0 = 00 A0 95 00 02 00 00 00 00 C0 95 00 02 00 00 00 
0006F5E0 = 00 E0 95 00 02 00 00 00 00 00 96 00 02 00 00 00 
0006F5F0 = 00 20 96 00 02 00 00 00 00 40 96 00 02 00 00 00 
0006F600 = 00 60 96 00 02 00 00 00 00 80 96 00 02 00 00 00 
0006F610 = 00 A0 96 00 02 00 00 00 00 C0 96 00 02 00 00 00 
0006F620 = 00 E0 96 00 02 00 00 00 00 00 97 00 02 00 00 00 
0006F630 = 00 20 97 00 02 00 00 00 00 40 97 00 02 00 00 00 
0006F640 = 00 60 97 00 02 00 00 00 00 80 97 00 02 00 00 00 
0006F650 = 00 A0 97 00 02 00 00 00 00 C0 97 00 02 00 00 00 
0006F660 = 00 E0 97 00 02 00 00 00 00 00 98 00 02 00 00 00 
0006F670 = 00 20 98 00 02 00 00 00 00 40 98 00 02 00 00 00 
0006F680 = 00 60 98 00 02 00 00 00 00 80 98 00 02 00 00 00 
0006F690 = 00 A0 98 00 02 00 00 00 00 C0 98 00 02 00 00 00 
0006F6A0 = 00 E0 98 00 02 00 00 00 00 00 99 00 02 00 00 00 
0006F6B0 = 00 20 99 00 02 00 00 00 00 40 99 00 02 00 00 00 
0006F6C0 = 00 60 99 00 02 00 00 00 00 80 99 00 02 00 00 00 
0006F6D0 = 00 A0 99 00 02 00 00 00 00 C0 99 00 02 00 00 00 
0006F6E0 = 00 E0 99 00 02 00 00 00 00 00 9A 00 02 00 00 00 
0006F6F0 = 00 20 9A 00 02 00 00 00 00 40 9A 00 02 00 00 00 
0006F700 = 00 60 9A 00 02 00 00 00 00 80 9A 00 02 00 00 00 
0006F710 = 00 A0 9A 00 02 00 00 00 00 C0 9A 00 02 00 00 00 
0006F720 = 00 E0 9A 00 02 00 00 00 00 00 9B 00 02 00 00 00 
0006F730 = 00 20 9B 00 02 00 00 00 00 40 9B 00 02 00 00 00 
0006F740 = 00 60 9B 00 02 00 00 00 00 80 9B 00 02 00 00 00 
0006F750 = 00 A0 9B 00 02 00 00 00 00 C0 9B 00 02 00 00 00 
0006F760 = 00 E0 9B 00 02 00 00 00 00 00 9C 00 02 00 00 00 
0006F770 = 00 20 9C 00 02 00 00 00 00 40 9C 00 02 00 00 00 
0006F780 = 00 60 9C 00 02 00 00 00 00 80 9C 00 02 00 00 00 
0006F790 = 00 A0 9C 00 02 00 00 00 00 C0 9C 00 02 00 00 00 
0006F7A0 = 00 E0 9C 00 02 00 00 00 00 00 9D 00 02 00 00 00 
0006F7B0 = 00 20 9D 00 02 00 00 00 00 40 9D 00 02 00 00 00 
0006F7C0 = 00 60 9D 00 02 00 00 00 00 80 9D 00 02 00 00 00 
0006F7D0 = 00 A0 9D 00 02 00 00 00 00 C0 9D 00 02 00 00 00 
0006F7E0 = 00 E0 9D 00 02 00 00 00 00 00 9E 00 02 00 00 00 
0006F7F0 = 00 20 9E 00 02 00 00 00 00 40 9E 00 02 00 00 00 
0006F800 = 00 60 9E 00 02 00 00 00 00 80 9E 00 02 00 00 00 
0006F810 = 00 A0 9E 00 02 00 00 00 00 C0 9E 00 02 00 00 00 
0006F820 = 00 E0 9E 00 02 00 00 00 00 00 9F 00 02 00 00 00 
0006F830 = 00 20 9F 00 02 00 00 00 00 40 9F 00 02 00 00 00 
0006F840 = 00 60 9F 00 02 00 00 00 00 80 9F 00 02 00 00 00 
0006F850 = 00 A0 9F 00 02 00 00 00 00 C0 9F 00 02 00 00 00 
0006F860 = 00 E0 9F 00 02 00 00 00 00 00 A0 00 02 00 00 00 
0006F870 = 00 20 A0 00 02 00 00 00 00 40 A0 00 02 00 00 00 
0006F880 = 00 60 A0 00 02 00 00 00 00 80 A0 00 02 00 00 00 
0006F890 = 00 A0 A0 00 02 00 00 00 00 C0 A0 00 02 00 00 00 
0006F8A0 = 00 E0 A0 00 02 00 00 00 00 00 A1 00 02 00 00 00 
0006F8B0 = 00 20 A1 00 02 00 00 00 00 40 A1 00 02 00 00 00 
0006F8C0 = 00 60 A1 00 02 00 00 00 00 80 A1 00 02 00 00 00 
0006F8D0 = 00 A0 A1 00 02 00 00 00 00 C0 A1 00 02 00 00 00 
0006F8E0 = 00 E0 A1 00 02 00 00 00 00 00 A2 00 02 00 00 00 
0006F8F0 = 00 20 A2 00 02 00 00 00 00 40 A2 00 02 00 00 00 
0006F900 = 00 60 A2 00 02 00 00 00 00 80 A2 00 02 00 00 00 
0006F910 = 00 A0 A2 00 02 00 00 00 00 C0 A2 00 02 00 00 00 
0006F920 = 00 E0 A2 00 02 00 00 00 00 00 A3 00 02 00 00 00 
0006F930 = 00 20 A3 00 02 00 00 00 00 40 A3 00 02 00 01 00 
0006F940 = 00 60 A3 00 FF FF FF 7F FF FF FF FF FF FF FF FF 
00070000 = 00 00 00 00 08 04 10 10 01 00 FF FF 03 00 01 00 
00070010 = 02 00 01 00 03 00 00 00 06 00 00 20 FF FF 00 00 
00070020 = FF FF FF FF 00 01 00 00 00 00 02 00 00 FF 00 00 
00070030 = 06 00 01 20 FF FF 02 00 FF FF FF FF 00 00 00 00 
00070040 = 00 00 00 00 00 FF 00 00 06 00 02 20 8E 03 00 00 
00070050 = 00 00 00 00 01 00 00 00 00 00 01 00 00 FF 00 00 
00070060 = 02 00 00 30 FF FF FF FF 02 00 01 30 FE FF FF FF 

My mesh init params:

nrf_clock_lf_cfg_t lfclksrc;
lfclksrc.source = NRF_SDH_CLOCK_LF_SRC;
lfclksrc.rc_ctiv = NRF_SDH_CLOCK_LF_RC_CTIV;
lfclksrc.rc_temp_ctiv = NRF_SDH_CLOCK_LF_RC_TEMP_CTIV;
lfclksrc.accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM;

mesh_stack_init_params_t init_params;
init_params.core.irq_priority       = NRF_MESH_IRQ_PRIORITY_THREAD;
init_params.core.lfclksrc           = lfclksrc;
init_params.core.p_uuid             = NULL;
init_params.core.relay_cb           = NULL;
init_params.models.models_init_cb   = staticModelsInitCallback;
init_params.models.config_server_cb = config_server_evt_cb;

Using NRF52832, SDK 15.3.0, SD 132 6.1.1, and Mesh SDK 3.2.0.

My question is: what do you expect the user to do in this case? Seeing how it's not self repairing or anything, you just brick your device with this.

Parents
  • Hi, 

    We haven't been able to reproduce this assert even after rebooting the device several thousand times. Looks like the cause of this assertion is possibly corrupted length field of the written entry. Such corruption can occur if the flash power supply is unstable, and if flash data gets corrupted such assertion can trigger.

    Seems like the problem occurred for the page starting at 0x6D000 (since p_end is 0x6E000 as per the debug logs) and a flash dump for that page haven't been provided. Could you provide a full flash dump when this issue happens and also ensure that the chip power supply is stable?

  • So by the time you asked for this full dump, I already decided disable persistent storage, and thus couldn't provide you with a full flash dump. However, we started using it again, and again ran into mesh asserts after some time.

    I suspect it started on brownout (already have a couple cases that are crashing since we enabled mesh persistent storage), which happens when the device is unplugged.

    This time it crashes at some other place in the code, but again during loading from flash at init.

    GDB trace:

    0x0003915a in app_error_fault_handler (id=id@entry=16386, pc=302160, info=info@entry=536935760) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/third/nrf/app_error_weak.c:101
    101	    NRF_BREAKPOINT_COND;
    (gdb) bt
    #0  0x0003915a in app_error_fault_handler (id=id@entry=16386, pc=302160, info=info@entry=536935760) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/third/nrf/app_error_weak.c:101
    #1  0x0004fd34 in mesh_assertion_handler (pc=<optimized out>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/examples/common/src/assertion_handler_weak.c:54
    #2  0x00049c52 in restore_addresses_for_model (p_model=0x200057e0 <m_model_pool+112>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:816
    #3  restore_models () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:853
    #4  access_flash_config_load () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:989
    #5  0x0004d4e2 in mesh_stack_init (p_init_params=p_init_params@entry=0x2000fdc4, p_device_provisioned=p_device_provisioned@entry=0x200040e4 <Mesh::getInstance()::instance+4>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/stack/src/mesh_stack.c:114
    #6  0x0003b698 in Mesh::init (this=0x200040e0 <Mesh::getInstance()::instance>, board=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/mesh/cs_Mesh.cpp:273
    #7  0x0003de6c in Crownstone::startOperationMode (mode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL, this=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:623
    #8  Crownstone::startOperationMode (this=0x2000ff14, mode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:612
    #9  0x0003dc30 in Crownstone::switchMode (this=this@entry=0x2000ff14, newMode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:528
    #10 0x0003d6a0 in Crownstone::init1 (this=this@entry=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:248
    #11 0x0003e2fc in Crownstone::init (step=1, this=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:806
    #12 Crownstone::handleEvent (this=0x2000ff14, event=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:806
    #13 0x0002f884 in EventDispatcher::dispatch (this=0x20002618 <EventDispatcher::getInstance()::instance>, event=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/events/cs_EventDispatcher.cpp:33
    #14 0x0002f2e4 in Storage::handleFileStorageEvent (this=0x20002818 <Storage::getInstance()::instance>, p_fds_evt=0x20002a28 <Timer::init()::APP_SCHED_BUF+264>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/drivers/cs_Storage.cpp:906
    #15 0x00040162 in app_sched_execute () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/nrf5_sdk/components/libraries/scheduler/app_scheduler.c:280
    #16 0x0003e2c8 in Crownstone::run (this=this@entry=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:784
    #17 0x0003e44c in main () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:960
    (gdb) f 2
    #2  0x00049c52 in restore_addresses_for_model (p_model=0x200057e0 <m_model_pool+112>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:816
    816	        NRF_MESH_ERROR_CHECK(dsm_address_publish_add_handle(p_model->model_info.publish_address_handle));
    

    Config:

    ACCESS_FLASH_PAGE_COUNT = 1
    DSM_FLASH_PAGE_COUNT = 1
    FLASH_MANAGER_RECOVERY_PAGE_OFFSET_PAGES = 6

    Flash dump: www.dropbox.com/.../flash.log

Reply
  • So by the time you asked for this full dump, I already decided disable persistent storage, and thus couldn't provide you with a full flash dump. However, we started using it again, and again ran into mesh asserts after some time.

    I suspect it started on brownout (already have a couple cases that are crashing since we enabled mesh persistent storage), which happens when the device is unplugged.

    This time it crashes at some other place in the code, but again during loading from flash at init.

    GDB trace:

    0x0003915a in app_error_fault_handler (id=id@entry=16386, pc=302160, info=info@entry=536935760) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/third/nrf/app_error_weak.c:101
    101	    NRF_BREAKPOINT_COND;
    (gdb) bt
    #0  0x0003915a in app_error_fault_handler (id=id@entry=16386, pc=302160, info=info@entry=536935760) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/third/nrf/app_error_weak.c:101
    #1  0x0004fd34 in mesh_assertion_handler (pc=<optimized out>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/examples/common/src/assertion_handler_weak.c:54
    #2  0x00049c52 in restore_addresses_for_model (p_model=0x200057e0 <m_model_pool+112>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:816
    #3  restore_models () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:853
    #4  access_flash_config_load () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:989
    #5  0x0004d4e2 in mesh_stack_init (p_init_params=p_init_params@entry=0x2000fdc4, p_device_provisioned=p_device_provisioned@entry=0x200040e4 <Mesh::getInstance()::instance+4>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/stack/src/mesh_stack.c:114
    #6  0x0003b698 in Mesh::init (this=0x200040e0 <Mesh::getInstance()::instance>, board=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/mesh/cs_Mesh.cpp:273
    #7  0x0003de6c in Crownstone::startOperationMode (mode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL, this=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:623
    #8  Crownstone::startOperationMode (this=0x2000ff14, mode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:612
    #9  0x0003dc30 in Crownstone::switchMode (this=this@entry=0x2000ff14, newMode=@0x2000ffec: OperationMode::OPERATION_MODE_NORMAL) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:528
    #10 0x0003d6a0 in Crownstone::init1 (this=this@entry=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:248
    #11 0x0003e2fc in Crownstone::init (step=1, this=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:806
    #12 Crownstone::handleEvent (this=0x2000ff14, event=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:806
    #13 0x0002f884 in EventDispatcher::dispatch (this=0x20002618 <EventDispatcher::getInstance()::instance>, event=...) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/events/cs_EventDispatcher.cpp:33
    #14 0x0002f2e4 in Storage::handleFileStorageEvent (this=0x20002818 <Storage::getInstance()::instance>, p_fds_evt=0x20002a28 <Timer::init()::APP_SCHED_BUF+264>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/drivers/cs_Storage.cpp:906
    #15 0x00040162 in app_sched_execute () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/nrf5_sdk/components/libraries/scheduler/app_scheduler.c:280
    #16 0x0003e2c8 in Crownstone::run (this=this@entry=0x2000ff14) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:784
    #17 0x0003e44c in main () at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/source/src/cs_Crownstone.cpp:960
    (gdb) f 2
    #2  0x00049c52 in restore_addresses_for_model (p_model=0x200057e0 <m_model_pool+112>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/access/src/access.c:816
    816	        NRF_MESH_ERROR_CHECK(dsm_address_publish_add_handle(p_model->model_info.publish_address_handle));
    

    Config:

    ACCESS_FLASH_PAGE_COUNT = 1
    DSM_FLASH_PAGE_COUNT = 1
    FLASH_MANAGER_RECOVERY_PAGE_OFFSET_PAGES = 6

    Flash dump: www.dropbox.com/.../flash.log

Children
No Data
Related