Unsigned integer overflow is not an error in C. The "shell.c" program is a command-line tool. The signed integer overflow errors you find there are in the built-in atoi()-like text-to-integer conversion routine that it part of that tool. You are passing in text strings that are too large to to be represented as a signed 64-bit integer, and so the conversion routine overflows. While technically this is undefined behavior, in practice it is completely harmless. I could add lots of complex logic to detect this problem and raise an fault, but that would be silly to do for a command-line tool like "sqlite3" so I'm not going to do it. Wont-fix