Tim Peters writes:

For a long time I've seen absurd tracebacks under -O (e.g., negative
line numbers), but very rarely.  Since I was looking at tracebacks
anyway, thought I'd track it down.  Turns out to be Guido's only
predictable blind spot <wink -- "char" is signed on some non-GvR
systems>.  Patch follows.
diff --git a/Python/compile.c b/Python/compile.c
index 1e937e4..e4e37d5 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3451,7 +3451,7 @@
 	int addrq;
 {
 	int size = PyString_Size(co->co_lnotab) / 2;
-	char *p = PyString_AsString(co->co_lnotab);
+	unsigned char *p = (unsigned char*)PyString_AsString(co->co_lnotab);
 	int line = co->co_firstlineno;
 	int addr = 0;
 	while (--size >= 0) {