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

check7ZODBThreads -> failed with InvalidObjectReference #383

Open
navytux opened this issue May 24, 2023 · 5 comments
Open

check7ZODBThreads -> failed with InvalidObjectReference #383

navytux opened this issue May 24, 2023 · 5 comments

Comments

@navytux
Copy link
Contributor

navytux commented May 24, 2023

CI on current master (8a7e316) failed on windows-py38-pure with:

Error in test check7ZODBThreads (ZODB.tests.testFileStorage.FileStorageTests)
Traceback (most recent call last):
  File "c:\hostedtoolcache\windows\python\3.8.10\x64\lib\unittest\case.py", line 60, in testPartExecutor
    yield
  File "c:\hostedtoolcache\windows\python\3.8.10\x64\lib\unittest\case.py", line 676, in run
    self._callTestMethod(testMethod)
  File "c:\hostedtoolcache\windows\python\3.8.10\x64\lib\unittest\case.py", line 633, in _callTestMethod
    method()
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 241, in check7ZODBThreads
    self._checkNThreads(7, ZODBClientThread, db, self)
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 229, in _checkNThreads
    t.join(60)
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 47, in join
    raise six.reraise(
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\six.py", line 719, in reraise
    raise value
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 40, in run
    self.runtest()
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 67, in runtest
    d = self.get_thread_dict(root)
  File "D:\a\ZODB\ZODB\src\ZODB\tests\MTStorage.py", line 99, in get_thread_dict
    transaction.commit()
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_manager.py", line 257, in commit
    return self.manager.commit()
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_manager.py", line 134, in commit
    return self.get().commit()
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_transaction.py", line 283, in commit
    reraise(t, v, tb)
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_compat.py", line 50, in reraise
    raise value
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_transaction.py", line 274, in commit
    self._commitResources()
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_transaction.py", line 457, in _commitResources
    reraise(t, v, tb)
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_compat.py", line 50, in reraise
    raise value
  File "D:\a\ZODB\ZODB\.tox\py38-pure\lib\site-packages\transaction\_transaction.py", line 431, in _commitResources
    rm.commit(self)
  File "D:\a\ZODB\ZODB\src\ZODB\Connection.py", line 498, in commit
    self._commit(transaction)
  File "D:\a\ZODB\ZODB\src\ZODB\Connection.py", line 545, in _commit
    self._store_objects(ObjectWriter(obj), transaction)
  File "D:\a\ZODB\ZODB\src\ZODB\Connection.py", line 576, in _store_objects
    p = writer.serialize(obj)  # This calls __getstate__ of obj
  File "D:\a\ZODB\ZODB\src\ZODB\serialize.py", line 434, in serialize
    return self._dump(meta, obj.__getstate__())
  File "D:\a\ZODB\ZODB\src\ZODB\serialize.py", line 443, in _dump
    self._p.dump(state)
  File "D:\a\ZODB\ZODB\src\ZODB\serialize.py", line 367, in persistent_id
    raise InvalidObjectReference(
ZODB.POSException.InvalidObjectReference: <unprintable InvalidObjectReference object>

@d-maurer, do you maybe have an idea about what is going on?

P.S.

Exception in thread T0:
Traceback (most recent call last):
  File "c:\hostedtoolcache\windows\python\3.8.10\x64\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "c:\hostedtoolcache\windows\python\3.8.10\x64\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "D:\a\ZODB\ZODB\src\ZODB\tests\racetest.py", line 5[27](https://github.com/zopefoundation/ZODB/actions/runs/5067242751/jobs/9098062772#step:6:28), in _run
    f(self, tx, *argv, **kw)
  File "D:\a\ZODB\ZODB\src\ZODB\tests\test_racetest.py", line 103, in tg_test_function
    raise ValueError(str(tx))
ValueError: 0

that comes before that is "ok" and is expectedly generated by test_racetest.py:test_exception added in 48315c6. Though it might be good to remove that traceback from test output to avoid confusing people when they try to check what is going on in a test failure.

@d-maurer
Copy link
Contributor

d-maurer commented May 26, 2023 via email

@navytux
Copy link
Contributor Author

navytux commented May 26, 2023

Thanks, Dieter. I read your explanations and too looked a bit at that code, and after quick inspection could not see how it could be breaking. But at least I've come with one small improvement so that next time instead of <unprintable InvalidObjectReference object> we see a bit more informative error message: #384.

@navytux
Copy link
Contributor Author

navytux commented May 26, 2023

I'm not sure it is related, but now ubuntu-py38-pure failed with "FAIL code -11" which means that python interpreted got segmentation fault.

it is somehow suspicious that in both cases it was py38 and "pure" kind of tests.

@navytux
Copy link
Contributor Author

navytux commented May 26, 2023

And check_race_loadopen_vs_local_invalidate "test did not finish within 120 seconds": https://github.com/zopefoundation/ZODB/actions/runs/5091513834/jobs/9151633676 . It seems we need to increase timeout there once again as we already did in ca41ccd.

@navytux
Copy link
Contributor Author

navytux commented May 26, 2023

(the timeout is again about py38)

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

2 participants