The STM32CubeMX software generates a USB stack with a call to free() in usbd_conf.c. If you disconnect USB by calling usbd_stop() the software crashes here as there is no free from stdlib or there is no correctly defined memory section to use. As the function is documentated as 'dummy' the call of free is useless anyway. Costs us hours to find this. Please fix it in next release!