Во-первых, SQLite в принципе хреново работает в конкурентном окружении и не предназначена для существенных нагрузок. Во-вторых, независимо от СУБД при конкурентном доступе к БД нужно правильно использовать блокировки, а вы этого не делаете, возможно. Во-третьих, может у вас в коде между контекстами выполнения разделяется курсор или соединение, а они для этого не предназначены и могут порождать абсолютно хаотичное поведение или вовсе падать.