Error 216 — typically “Runtime error 216 at” plus a memory address — is one of the oldest Windows error numbers still in circulation. It comes from software built with old Pascal/Delphi-era tools: the program touched memory it didn't own (an access violation) and the runtime shut it down. On a modern PC it almost always involves an old program — or, rarely, something pretending to be one.
Old runtimes numbered their failures, and 216 was “access violation”: the program read or wrote memory outside its own space. Modern Windows enforces memory boundaries strictly, so habits that slipped by on Windows 95/XP — stray pointers, use-after-close bugs in old code — now end the program immediately. The address after “at” is where it happened, useful to the program's maker, not needed for the fix.
If one beloved old program simply cannot run on current Windows even with compatibility settings, the remaining honest options are the maker's modern replacement, or running the old program inside a virtual machine with an older Windows (VirtualBox plus a licensed old Windows image). If 216s appear across many programs with random addresses, suspect hardware instead — run Windows Memory Diagnostic; failing RAM produces exactly that scatter pattern.
Is runtime error 216 a virus? Usually not — it's an old program crashing. But it earned a scan if nothing old is installed, because ancient malware built with the same tools threw the same error.
Why does it appear at shutdown? A legacy program or service is closing badly — unloading in the wrong order. Identify it via Event Viewer; updating it or disabling its startup entry ends the message.