=== Top of the Swiki === Attachments ===
FAQ: Stability
How stable is Squeak? It seems to be remarkably robust.
It is very stable. Ted Kaehler
Normally, when you crash Squeak, you've found a VM bug, which needs to be fixed, but this case is rather rare, since the VM is relatively small and is mostly auto-generated from Smalltalk code, which has been subject to a lot of debugging...
Actually, apart from VM bugs, there are ways of crashing a Smalltalk system. It's just much more difficult to do it unintentionally than in C or C++.
You can use low-level system primitives such as #become: between system-critical objects to mess up the system, or you can break basic assumptions that the VM makes without checking on every occasion:
- The class structures must be consistent (superclass chain, format word, method dictionaries)
- Methods must match the objects in which they are executing. If you take the method #x: from class Point and install it in class Object, you will be able to disrupt the system by sending #x: to a sufficiently well-placed object.
- Introducing errors into the error-handling mechanism is a good source of infinite recursions which you cannot interrupt, because interrupts are handled by the same error-handling mechanisms.
Hans-Martin Mosner