The normal reason for crashes in Cortex M3 interrupts is an invalid interrupt priority. The priority must be equal to or below configMAX_SYSCALL_INTERRUPT_PRIORITY, which on the Cortex M3 means the priority value must be lower than configMAX_SYSCALL_INTERRUPT_PRIORITY (a priority of 255 being lower than a priority of 0). You must set the interrupt priority otherwise it will default to zero and most probably crash. Also, make sure you set it correctly as different functions use different methods, some need the priority shifted up to the most significant bits and other don’t.
If it is memcpy that is crashing, can you stop on the debugger and see the addresses it is copying to and from?
As suggested, I think this is where your bug lies. The interrupt priority is below 0, because it is numerically higher.
What is configMAX_SYSCALL_INTERRUPT_PRIORITY set to in FreeRTOSConfig.h. By default it will be 11, so your interrupt priorities need to be 11, 12, 13, or 14. Anything else will cause intermittent problems.