up_assert: Assertion failed at file:manager/audio_manager.cpp line: 649 task: init



  • still working on relatively simple audio recording looper with files named by GNSS - it records 6 or 7 times - never a fixed amount then throws this error:

    up_assert: Assertion failed at file:manager/audio_manager.cpp line: 649 task: init

    i'll post the full snippet below

    up_assert: Assertion failed at file:manager/audio_manager.cpp line: 649 task: init
    up_dumpstate: sp:     0d0509bc
    up_dumpstate: IRQ stack:
    up_dumpstate:   base: 0d047d00
    up_dumpstate:   size: 00000800
    up_dumpstate:   used: 000000f0
    up_dumpstate: User stack:
    up_dumpstate:   base: 0d050c58
    up_dumpstate:   size: 00001fec
    up_dumpstate:   used: 00000690
    up_stackdump: 0d0509a0: 0d0509cc 00000000 0d050a10 0d045a00 0d03e388 00000000 00000000 0d03e388
    up_stackdump: 0d0509c0: 00000000 0d0133d1 000fd080 000fd8e4 000fd040 0d01bac5 0d050a50 0d011fbd
    up_stackdump: 0d0509e0: 0d050a30 000fd040 0001e006 00008000 00000000 00000000 0d045a00 0d045a00
    up_stackdump: 0d050a00: 0d03e388 0d000b1f c0000000 0d04e9ac 00000007 00000001 00000000 00000000
    up_stackdump: 0d050a20: 00000000 0d007ab1 0d04ebd7 0d005367 02330000 00000007 0d04e9ac 0d020241
    up_stackdump: 0d050a40: 00000007 0d005427 0d036c06 0a041204 0d045a08 0d045a00 0d045a08 0d000497
    up_stackdump: 0d050a60: 0d08d460 0000000a 0000000a 0d050b40 00000020 0d050b48 00000020 0d050b50
    up_stackdump: 0d050a80: 00000020 0d04e6c0 00000000 0d000000 0d03e388 00000000 00000000 00000000
    up_stackdump: 0d050aa0: 00000000 ffffffe9 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050ac0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050ae0: 00000000 00000000 00000001 0d050b54 0d04e6c0 00000020 000fd7b4 0d006fd7
    up_stackdump: 0d050b00: 0d020938 01000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050b20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050b40: 00000000 00000000 00000000 0d006fc5 00000000 0d050c28 00000000 0d03e3a0
    up_stackdump: 0d050b60: 0d045a00 0d000000 0d03e388 00000000 00000000 00000000 00000000 ffffffe9
    up_stackdump: 0d050b80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050ba0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050bc0: 00000000 0d045a08 005dba00 005dbfff 000fd7b4 0d001fd1 0d00047e 01000000
    up_stackdump: 0d050be0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050c00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    up_stackdump: 0d050c20: 00000000 00000000 0d03e3a0 0d03e3a0 0d000000 0d001fd1 0d01a5b3 00000101
    up_stackdump: 0d050c40: 00000000 00000000 00000000 0d002bab 00000000 00000000 deadbeef 0d050c64
    up_taskdump: Idle Task: PID=0 Stack Used=0 of 0
    up_taskdump: hpwork: PID=1 Stack Used=584 of 2028
    up_taskdump: lpwork: PID=2 Stack Used=352 of 2028
    up_taskdump: lpwork: PID=3 Stack Used=352 of 2028
    up_taskdump: lpwork: PID=4 Stack Used=352 of 2028
    up_taskdump: init: PID=5 Stack Used=1680 of 8172
    up_taskdump: cxd56_pm_task: PID=6 Stack Used=320 of 996
    up_taskdump: <pthread>: PID=7 Stack Used=704 of 1020
    up_taskdump: AMNG: PID=8 Stack Used=648 of 2028
    up_taskdump: PLY_OBJ: PID=9 Stack Used=320 of 3052
    up_taskdump: SUB_PLY_OBJ: PID=10 Stack Used=320 of 3044
    up_taskdump: OMIX_OBJ: PID=11 Stack Used=328 of 3044
    up_taskdump: RENDER_CMP_DEV0: PID=12 Stack Used=312 of 2020
    up_taskdump: RENDER_CMP_DEV1: PID=13 Stack Used=312 of 2020
    up_taskdump: FED_OBJ: PID=14 Stack Used=544 of 2028
    up_taskdump: REC_OBJ: PID=15 Stack Used=600 of 2028
    up_taskdump: CAPTURE_CMP_DEV0: PID=16 Stack Used=560 of 2012
    
    

    which references this function in the audio_manager.cpp file

    int AS_ReceiveAudioResult(FAR AudioResult *packet)
    {
      err_t           err_code;
      FAR MsgQueBlock *que;
      FAR MsgPacket   *msg;
    
      err_code = MsgLib::referMsgQueBlock(s_appMid, &que);
      F_ASSERT(err_code == ERR_OK);
    
      err_code = que->recv(TIME_FOREVER, &msg);
      F_ASSERT(err_code == ERR_OK);
      F_ASSERT(msg->getType() == MSG_AUD_MGR_RST);
    
      *packet = msg->moveParam<AudioResult>();
      err_code = que->pop();
      F_ASSERT(err_code == ERR_OK);
    
      return AS_ERR_CODE_OK;
    }
    

    it crashes no matter how long i try and record for - 10 second loops or 1 minute loops

    b


  • DeveloperWorld

    Hi @Ben-eaton

    In the folder sdk/tools/ you will find a script called callstack.py
    You can use this tool to analyze your stack dumps.

    spresense/sdk/tools$ ./callstack.py 
    Usage: python ./callstack.py <System.map> <stackdump.log>
    

    What code are you running?



  • hi @TE-KarlKomierowski
    a variant on the code for the previous issue i posted about freezing audio at 192khz but using the recorderSize instead of millis to determine the size of the audio chunks i'm writing to file

    thanks

    b


  • DeveloperWorld

    Have you tried to isolate and verify the functions alone?
    Audio without GNSS, GNSS without Audio etc?



  • yeah - so i built this up from the recorder example - in my sketch in the other issue i posted (sorry i know i've spread my issues accross two posts but they felt like they could be separate things) i don't get this crash the main difference between the two is using a timer with millis() rather than the size of the recorder to chunk the audio - am in the process of stripping it back to individual functions - - just trying to trace using the python script -
    but my main issue at the moment is that the board seems to freeze up when running in highRes mode as the recorder seems to be running happily at 48khz without the above crash

    cheers

    best

    ben



  • hi @TE-KarlKomierowski

    so ran the sketch with no gnss - ran the sketch at 192khz audio

    got the same error - but as it crashes on the board after 20 minutes or so of running - i don't seem to get a log file to use the python script with

    thanks

    best

    b



  • @Ben-eaton
    is there an explanation of how to better understand what is happening in a crash

    i am still receiving 'assertion failed' and then a whole bunch of error stuff underneath and no real way to work out what is causing this

    best

    b


  • DeveloperWorld

    Hi @Ben-eaton,

    To analyze a stack dump the Spresense full SDK provide a tool where you can specify two files as arguments. One is your saved log file, and the other one is the system map file. Doing that you should be able to get the stack trace. If you have build your software with the Arduino IDE you should be able to find where your map file is located in the Arduino IDE log window. Go to File -> Preferences -> Settings -> Show verbose output during and select compilation and when you build your sketch you should be able to find where your build folder is. Normally this folder would be located in /tmp and look something like this:

    /tmp/arduino_build_724727/
    

    Fetch the full SDK from github:

    git clone --recursive git@github.com:sonydevworld/spresense.git
    

    Change directory to the SDK:

    $cd spresense/sdk
    spresense/sdk$ ./tools/callstack.py -h
    Usage: python ./tools/callstack.py <System.map> <stackdump.log>
    

    Now just specify the location of your files:

    ./tools/callstack.py /tmp/arduino_build_724727/output.map stackoverflow.log
    

    Best regards,
    Kamil Tomaszewski