OpenSSL PKCS#11 engine destroys underlying key material via $SRC/common/openssl/crypto/engine/hw_pk11.c:pk11_destroy_{rsa,dsa,dh}_key_objects(). These functions are called either to destroy data referenced by single PK11_SESSION object or to destroy data in all sessions in the free list (see Evaluation field in CR 6602801). The data are destroyed via call to pk11_destroy_object() which in turn calls C_DestroyObject() from libpkcs11. If pk11_destroy_object() fails, pk11_destroy_{rsa,dsa,dh}_key_objects() return immediately.
If In the latter case (freelist) this leads to termination of the list traversal which could result in data not being destroyed.