Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault when iterating tree #980

Closed
liangjingyang opened this issue Feb 26, 2020 · 2 comments
Closed

Segmentation fault when iterating tree #980

liangjingyang opened this issue Feb 26, 2020 · 2 comments

Comments

@liangjingyang
Copy link

liangjingyang commented Feb 26, 2020

If I want to iterate all files on a specific commit, what should I do?

I tried the code below but got segmentation fault error.

libgit2: 0.99
pygit2: pip install -U git+https://github.com/libgit2/pygit2.git@master (commit: eb4984e)

from pygit2 import Repository

def test_iter_trees():
    # directory structure on commit 1883433
    # .
    # ├── README.md
    # └── a
    #     ├── b
    #     │   └── f1.txt
    #     ├── c
    #     │   └── f2.txt
    #     └── f3.txt
    repo = Repository('/tmp/test')
    commit = repo.get('1883433')
    for obj in commit.tree:  # good
        print(obj.id, obj.type_str, obj.name)
    a = commit.tree / 'a'
    print(a.name, type(a))  # a, pygit2.Tree
    f3 = commit.tree / 'a' / 'f3.txt'
    print(f3.name)  # f3.txt
    f1 = commit.tree / 'a' / 'b' / 'f1.txt'
    print(f1.name)  # f1.txt
    for obj in commit.tree / 'a':  # Segmentation fault when iterating sub directory a ( or b, c)
        print(obj.id, obj.type_str, obj.name)
# output
427329f69cf675c9908f73d2f3de9d848cdbd935 tree a
a <class '_pygit2.Tree'>
f3.txt
f1.txt
Fatal Python error: Segmentation fault

Current thread 0x000000011d957dc0 (most recent call first):
  File "/Users/jingyang/data/persper/meta-analytics/script/test_git_wrapper.py", line 299 in test_iter_trees
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/python.py", line 167 in pytest_pyfunc_call
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/python.py", line 1445 in runtest
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 134 in pytest_runtest_call
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 210 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 237 in from_call
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 210 in call_runtest_hook
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 185 in call_and_report
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 99 in runtestprotocol
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/runner.py", line 84 in pytest_runtest_protocol
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/main.py", line 271 in pytest_runtestloop
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/main.py", line 247 in _main
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/main.py", line 197 in wrap_session
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/main.py", line 240 in pytest_cmdline_main
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/Users/jingyang/.pyenv/versions/3.7.6/envs/ma/lib/python3.7/site-packages/_pytest/config/__init__.py", line 93 in main
  File "/Users/jingyang/.pyenv/versions/ma/bin/pytest", line 10 in <module>
@rcoup
Copy link
Contributor

rcoup commented Mar 2, 2020

I think this is the same issue as in #984 (and hopefully fixed by it)

@jdavid
Copy link
Member

jdavid commented Mar 3, 2020

PR #984 merged, I've verified it fixes this issue, closing.

Thanks @rcoup !

@jdavid jdavid closed this as completed Mar 3, 2020
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Mar 10, 2020
1.1.1 (2020-03-06)
-------------------------

- Fix crash in tree iteration
  `#984 <https://github.com/libgit2/pygit2/pull/984>`_
  `#980 <https://github.com/libgit2/pygit2/issues/980>`_

- Do not include the docs in dist files, so they're much smaller now
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants