Bug#994911: error modifying deb822 object while iterating

Niels Thykier niels at thykier.net
Sun Oct 10 11:42:43 BST 2021


On Sun, 10 Oct 2021 08:41:55 +0200 Niels Thykier <niels at thykier.net> wrote:
> 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
> 
> 

Thinking some more about, this *might* be fixed as a side effect of:

https://salsa.debian.org/python-debian-team/python-debian/-/merge_requests/69/diffs?commit_id=2832d2fc306b10f56ff910e6e1cf990ccdb9e9b4

(but it is hard to tell for sure without the concrete code you were using)

Feel free to cherry-pick that commit out of the branch/MR if you need it. :)

Thanks,
~Niels



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