в USB CDC есть и еще более чудный баг. Память под параметры выделяется в USBD_CDC_Init маллоком, при этом в куче может быть всякое барахло, которое потом прямо так пересылается хосту при запросе что приводит к ошибке при открытии порта. Проблема возникает случайно, в зависимости от качества дерьма в куче. Помогает зануление всей области