Did you check the value of the pull up resistor in the bluepill board?
Should be 1k5, or as close as possible, other values may cause re-enumeration issues.
Other than that, may help to report what OS you are using, and perhaps testing with an older version of the core in case something has changed recently.

vde wrote:MapleMini clone, bootloader works fine - but when control switches to application (even Bootloader Updater) host gets error:
...
ps. it was compiled with -O0 or -Os without any difference. Library downloaded yesterday from Github

USBserial is 'embedded' automatically into the user-sketch... Bootloader doesnot control sketchbUSB. Therefore, you must select the board Maple Mini and the correct bootloader version from the ArduinoIDE dropdown.

/*
BlinkNcount for Maple Mini by m. ray burnette
Compiled on Linux Mint 17.8 64-bit
Arduino 1.7.8 using Maple Mini Bootloader 2.0 tested on 20160217
Sketch uses 14,092 bytes (11%) of program storage space. Maximum is 122,880 bytes.
Global variables use 2,560 bytes of dynamic memory.
Turns on an LED on for one second, then off for one second, repeatedly.
Counts and displays the count on the attached serial monitor
This example code is in the public domain.
*/
#define BOARD_LED_PIN PB1 // Maple Mini pin# 33
int n = 0;
void setup() {
// initialize the digital pin as an output.
pinMode(BOARD_LED_PIN, OUTPUT);
// Initialize virtual COM over USB on Maple Mini
Serial.begin(9600); // BAUD has no effect on USB serial: placeholder for physical UART
// wait for serial monitor to be connected.
while (!(Serial.isConnected() && (Serial.getDTR() || Serial.getRTS())))
{
digitalWrite(BOARD_LED_PIN,!digitalRead(BOARD_LED_PIN));// Turn the LED from off to on, or on to off
delay(100); // fast blink
}
Serial.println("Blink LED & count Demo");
}
void loop() {
digitalWrite(33, HIGH); // set the LED on
delay(500); // wait for a second
digitalWrite(33, LOW); // set the LED off
Serial.print("Loop #: ");
n++;
Serial.println(n);
delay(500); // wait
}

Arduino.cc seem to be doing a new version of the IDE about every 3 weeks
(I looked on Github and the Tag for 1.8.0 was only 22 days ago, and the change to 1.8.1 was 3 days ago)

Updated at this level of frequency are a problem for us, as we need to do a basic re-test every time they bring out a new version.

I've no idea whether 1.8.1 has any issues for us, as I wasn't even aware it had been released.
(I'm on the IDE developers mailing list but they don't seem to send out notifications of a new release though that channel)

Can you post the compiler verbose output by building the blink sketch? Maybe we can find out some issues from there.
The serial USB should be defined and compiled when the "STM32duino bootloader" is selected in IDE as upload option, otherwise is not sure.