Bug#994911: error modifying deb822 object while iterating

Niels Thykier niels at thykier.net
Sun Oct 10 07:41:55 BST 2021


On Thu, 23 Sep 2021 00:43:50 +0000 Jelmer Vernooij <jelmer at debian.org>
wrote:
> Package: python3-debian
> Version: 0.1.41
> Severity: normal
> 
> Modifying a deb822 file while iterating over it results in a RuntimeError:
> 
> ...
>   File "/home/jelmer/src/debian-janitor/python-debian/lib/debian/_deb822_repro/parsing.py", line 2208, in iter_keys
>     yield from self._kvpair_elements
> RuntimeError: dictionary keys changed during iteration
> 
> (This doesn't happen with the default deb822 implementation)
> 
> [...]


Hi,

Can you provide the code snippet that triggers this bug?

As I understand it, this is "normal" for a dict depending on the exact
usage, which is why I would like to see what you were doing when you
triggered the bug. :)

Example with dict:

>>>> d = {'a': 1, 'b': 2}
>>>> for e in d:
> ...   if d[e] == 2:
> ...     d['z'] = 1
> ... 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> RuntimeError: dictionary changed size during iteration
>>>> for e in d:
> ...     d[e] = 2
> ... 
>>>> 


Thanks,
~Niels



More information about the pkg-python-debian-maint mailing list