This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author HubTou
Recipients HubTou, terry.reedy
Date 2022-03-26.07:09:18
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1648278558.37.0.343597177964.issue47072@roundup.psfhosted.org>
In-reply-to
Content
Hello,
Same results with Python 3.10.4:

[...]
Adding 185.220.102.6
Database has 62 records for 442368 bytes. Last record was 640 bytes long
Traceback (most recent call last):
  File "./shelve-test.py", line 84, in <module>
    _verify_whois_cache()
  File "./shelve-test.py", line 63, in _verify_whois_cache
    for key in db.keys():
  File "/usr/local/lib/python3.10/_collections_abc.py", line 881, in __iter__
    yield from self._mapping
  File "/usr/local/lib/python3.10/shelve.py", line 95, in __iter__
    for k in self.dict.keys():
SystemError: Negative size passed to PyBytes_FromStringAndSize
# freebsd-version -uk
13.0-RELEASE-p8
13.0-RELEASE-p10
# python3.10 --version
Python 3.10.4

The point at which the database breaks depends (from 50 to 500+ records), the size of the database doesn't seem to be relevant (from 400K to 1800K).

The size of the record *apparently* doesn't seem to be relevant (but I'm not 100% sure it's the right figure), though I've had other shelve module uses without issues with many more records but much smaller and less complex.
History
Date User Action Args
2022-03-26 07:09:18HubTousetrecipients: + HubTou, terry.reedy
2022-03-26 07:09:18HubTousetmessageid: <1648278558.37.0.343597177964.issue47072@roundup.psfhosted.org>
2022-03-26 07:09:18HubToulinkissue47072 messages
2022-03-26 07:09:18HubToucreate