Title: sqlite3: Blob crashes when using a negative-step slice · Issue #150449 · python/cpython · GitHub
Open Graph Title: sqlite3: Blob crashes when using a negative-step slice · Issue #150449 · python/cpython
X Title: sqlite3: Blob crashes when using a negative-step slice · Issue #150449 · python/cpython
Description: What happened? sqlite3.Blob crashes when you use a negative step in a slice — both for reading and writing. The sequence operations docs say s[i:j:k] with negative k is valid, and bytearray handles it fine. import sqlite3 con = sqlite3.c...
Open Graph Description: What happened? sqlite3.Blob crashes when you use a negative step in a slice — both for reading and writing. The sequence operations docs say s[i:j:k] with negative k is valid, and bytearray handles...
X Description: What happened? sqlite3.Blob crashes when you use a negative step in a slice — both for reading and writing. The sequence operations docs say s[i:j:k] with negative k is valid, and bytearray handles...
Opengraph URL: https://github.com/python/cpython/issues/150449
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"sqlite3: Blob crashes when using a negative-step slice","articleBody":"### What happened?\n\n`sqlite3.Blob` crashes when you use a negative step in a slice — both for reading and writing. \nThe [sequence operations docs](https://docs.python.org/3/library/stdtypes.html#typesseq-common) say `s[i:j:k]` with negative `k` is valid, and `bytearray` handles it fine.\n\n```python\nimport sqlite3\n\ncon = sqlite3.connect(\":memory:\")\ncon.execute(\"CREATE TABLE t(b BLOB)\")\ndata = b\"this blob data string is exactly fifty bytes long!\"\ncon.execute(\"INSERT INTO t(b) VALUES (?)\", (data,))\n\n# bytearray works\nba = bytearray(data)\nba[9:0:-2] = b\"12345\"\nprint(ba)\n# b't5i4 3l2b1data string is exactly fifty bytes long!'\n\n# Blob crashes\nblob = con.blobopen(\"t\", \"b\", 1)\nblob[9:0:-2] = b\"12345\"\nblob.close()\n```\n\n```\n\u003e\u003e\u003e blob[9:0:-2] = b\"12345\"\nTraceback (most recent call last):\n File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nSystemError: Negative size passed to PyBytes_FromStringAndSize\n```\n\nReading also crashes: `blob[9:0:-2]` raises the same error.\n\nOn Python 3.11.6 and 3.14.5 the error is `SystemError: Negative size passed to PyBytes_FromStringAndSize`. \nOn the current main branch `read_multiple` was changed to use `PyBytesWriter_Create`, so the message is now `ValueError: size must be \u003e= 0` — but the root cause is the same.\n\n### CPython versions tested on:\n\n3.11.6, 3.14.5, main(629da5c914b4407e01c1dc06cbcbd8dce825fef3)\n\n### Operating systems tested on:\n\nmacOS - 26.3.1 (a)(25D771280a)\n\n---\n\n### Related\n\n- gh-142787 / gh-142824 — different bug (assertion failure on empty slice, already fixed)\n- https://docs.python.org/3/library/stdtypes.html#typesseq-common (`s[i:j:k]`, negative k)\n\n\n---\nI'd like to work on a fix for this. I'll submit a PR.\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-150450\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/ever0de","@type":"Person","name":"ever0de"},"datePublished":"2026-05-26T05:07:15.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/150449/cpython/issues/150449"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:a3b0abe4-b972-2b7c-22e0-3b3a4a7f598e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | DA72:1EC7:59BE188:7ECD250:6A5030EE |
| html-safe-nonce | aea5eb8163164863e202558d8eeda66e2728565f1229d3bf823e664b4309ba1c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQTcyOjFFQzc6NTlCRTE4ODo3RUNEMjUwOjZBNTAzMEVFIiwidmlzaXRvcl9pZCI6IjQ1ODkwMjQ4NjY1MTkyMzI3NTAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | fc3ccf4ec25ffb5bcbecedd88576ce2c21f85e71d94b5bfca4ef6732a52325ce |
| hovercard-subject-tag | issue:4521523497 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/150449/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e2c725672f6fb9f61b2b9970eaf4b56f9b20d5d27b6040d374141a64b0600690/python/cpython/issues/150449 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e2c725672f6fb9f61b2b9970eaf4b56f9b20d5d27b6040d374141a64b0600690/python/cpython/issues/150449 |
| og:image:alt | What happened? sqlite3.Blob crashes when you use a negative step in a slice — both for reading and writing. The sequence operations docs say s[i:j:k] with negative k is valid, and bytearray handles... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ever0de |
| hostname | github.com |
| expected-hostname | github.com |
| None | d6dc8294eb500fa36bbc57472d61fe87c522f9c3c1d64f70f4926f66a66a7efb |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | d90666eaf032b7eb8975a378efe38e37f4ebb96c |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width