Bug 2007478

Summary: Segmentation fault
Product: [Fedora] Fedora Reporter: Raphael Groner <projects.rg>
Component: python-jinja2Assignee: Thomas Moschny <thomas.moschny>
Status: CLOSED INSUFFICIENT_DATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 34CC: lewk, orion, pj.pandit, python-sig, thomas.moschny
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-10-31 13:43:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Raphael Groner 2021-09-24 02:13:54 UTC
Description of problem:

Python script:

DIR_NAME = os.path.dirname(__file__)
SSHD_CONFIG_TMPL = os.path.abspath(os.path.sep.join(
    [DIR_NAME, 'sshd_config.tmpl']))
SSHD_CONFIG = os.path.abspath(os.path.sep.join([DIR_NAME, 'sshd_config']))

from jinja2 import Template

def make_config(self):
        with open(SSHD_CONFIG_TMPL) as fh:
            tmpl = fh.read()
        template = Template(tmpl)
        with open(SSHD_CONFIG, 'w') as fh:
            fh.write(template.render(parent_dir=os.path.abspath(DIR_NAME)))
            fh.write(os.linesep)

File content for SSHD_CONFIG_TMPL looks like:

Protocol 2
UsePAM yes
HostbasedAuthentication no
IgnoreUserKnownHosts yes
ListenAddress 127.0.0.1
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
AuthorizedKeysFile {{parent_dir}}/authorized_keys
UsePrivilegeSeparation no
StrictModes no

Version-Release number of selected component (if applicable):
Python 3.9 (Fedora 34) and Python 3.10 (Rawhide)

How reproducible:
yes

Steps to Reproduce:
1. try to execute above sample function
2. again, try to execute above sample function
3. again again again, try to execute above sample function

Actual results:
segmentation fault with backtrace

Expected results:
no error reported

Additional info:

Backtrace with Fedora 34:

  File "/usr/lib/python3.9/site-packages/jinja2/nodes.py", line 160 in iter_child_nodes
  File "/usr/lib/python3.9/site-packages/jinja2/nodes.py", line 179 in find_all
  File "/usr/lib/python3.9/site-packages/jinja2/nodes.py", line 182 in find_all
  File "/usr/lib/python3.9/site-packages/jinja2/nodes.py", line 182 in find_all
  File "/usr/lib/python3.9/site-packages/jinja2/nodes.py", line 172 in find
  File "/usr/lib/python3.9/site-packages/jinja2/compiler.py", line 733 in visit_Template
  File "/usr/lib/python3.9/site-packages/jinja2/visitor.py", line 32 in visit
  File "/usr/lib/python3.9/site-packages/jinja2/compiler.py", line 87 in generate
  File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 586 in _generate
  File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 629 in compile
  File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 941 in from_string
  File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 1031 in __new__
[…]
  File "/usr/lib/python3.9/site-packages/_pytest/unittest.py", line 159 in fixture
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 925 in call_fixture_func
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 1126 in pytest_fixture_setup
  File "/usr/lib/python3.9/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 84 in <lambda>
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/usr/lib/python3.9/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 1072 in execute
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 687 in _compute_fixture_value
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 601 in _get_active_fixturedef
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 581 in getfixturevalue
  File "/usr/lib/python3.9/site-packages/_pytest/fixtures.py", line 568 in _fillfixtures
  File "/usr/lib/python3.9/site-packages/_pytest/unittest.py", line 197 in setup
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 449 in prepare
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 150 in pytest_runtest_setup
  File "/usr/lib/python3.9/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 84 in <lambda>
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/usr/lib/python3.9/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 255 in <lambda>
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 311 in from_call
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 254 in call_runtest_hook
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 215 in call_and_report
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 120 in runtestprotocol
  File "/usr/lib/python3.9/site-packages/_pytest/runner.py", line 109 in pytest_runtest_protocol
  File "/usr/lib/python3.9/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 84 in <lambda>
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/usr/lib/python3.9/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/usr/lib/python3.9/site-packages/_pytest/main.py", line 348 in pytest_runtestloop
  File "/usr/lib/python3.9/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 84 in <lambda>
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/usr/lib/python3.9/site-packages/pluggy/hooks.py", line 286 in __call__
  File "/usr/lib/python3.9/site-packages/_pytest/main.py", line 323 in _main
  File "/usr/lib/python3.9/site-packages/_pytest/main.py", line 269 in wrap_session
  File "/usr/lib/python3.9/site-packages/_pytest/main.py", line 316 in pytest_cmdline_main
  File "/usr/lib/python3.9/site-packages/pluggy/callers.py", line 187 in _multicall
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 84 in <lambda>
  File "/usr/lib/python3.9/site-packages/pluggy/manager.py", line 93 in _hookexec
  File "/usr/lib/python3.9/site-packages/pluggy/hooks.py", line 286 in __call__

Backtrace with Rawhide:

  File "/usr/lib/python3.10/site-packages/jinja2/lexer.py", line 706 in tokeniter
  File "/usr/lib/python3.10/site-packages/jinja2/lexer.py", line 624 in wrap
  File "/usr/lib/python3.10/site-packages/jinja2/lexer.py", line 389 in __next__
  File "/usr/lib/python3.10/site-packages/jinja2/lexer.py", line 335 in __init__
  File "/usr/lib/python3.10/site-packages/jinja2/lexer.py", line 613 in tokenize
  File "/usr/lib/python3.10/site-packages/jinja2/environment.py", line 656 in _tokenize
  File "/usr/lib/python3.10/site-packages/jinja2/parser.py", line 60 in __init__
  File "/usr/lib/python3.10/site-packages/jinja2/environment.py", line 606 in _parse
  File "/usr/lib/python3.10/site-packages/jinja2/environment.py", line 749 in compile
  File "/usr/lib/python3.10/site-packages/jinja2/environment.py", line 1092 in from_string
  File "/usr/lib/python3.10/site-packages/jinja2/environment.py", line 1208 in __new__
[…]
  File "/usr/lib/python3.10/site-packages/_pytest/unittest.py", line 159 in fixture
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 925 in call_fixture_func
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 1126 in pytest_fixture_setup
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 1072 in execute
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 687 in _compute_fixture_value
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 601 in _get_active_fixturedef
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 581 in getfixturevalue
  File "/usr/lib/python3.10/site-packages/_pytest/fixtures.py", line 568 in _fillfixtures
  File "/usr/lib/python3.10/site-packages/_pytest/unittest.py", line 197 in setup
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 449 in prepare
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 150 in pytest_runtest_setup
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 255 in <lambda>
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 311 in from_call
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 254 in call_runtest_hook
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 215 in call_and_report
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 120 in runtestprotocol
  File "/usr/lib/python3.10/site-packages/_pytest/runner.py", line 109 in pytest_runtest_protocol
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 348 in pytest_runtestloop
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 323 in _main
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 269 in wrap_session
  File "/usr/lib/python3.10/site-packages/_pytest/main.py", line 316 in pytest_cmdline_main
  File "/usr/lib/python3.10/site-packages/pluggy/_callers.py", line 39 in _multicall
  File "/usr/lib/python3.10/site-packages/pluggy/_manager.py", line 80 in _hookexec
  File "/usr/lib/python3.10/site-packages/pluggy/_hooks.py", line 265 in __call__
  File "/usr/lib/python3.10/site-packages/_pytest/config/__init__.py", line 162 in main
  File "/usr/lib/python3.10/site-packages/_pytest/config/__init__.py", line 185 in console_main
  File "/usr/bin/pytest", line 33 in <module>

Comment 1 Thomas Moschny 2021-09-24 12:37:14 UTC
Cannot reproduce. Using the files you provided, the example works fine for me.

Comment 2 Raphael Groner 2021-09-25 11:15:01 UTC
Please keep this bug open till found possible solution.

Crashes happen while execution of tests for python-ssh2-python package. Therefore will see if there are any more information available to consider.

Comment 3 Raphael Groner 2021-09-25 11:15:35 UTC
Those tests are running inside mock. Maybe memory leak or restricted resources?

Comment 4 Thomas Moschny 2021-10-23 10:09:48 UTC
Please provide more info why you think this is bug in jinja.

Comment 5 Raphael Groner 2021-11-03 10:28:28 UTC
Package python-ssh2-python as the cause is orphaned.