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

Lots of fiber tests are failing on x86 (32-bits) 8.2.0beta3 #9357

Closed
andypost opened this issue Aug 17, 2022 · 16 comments
Closed

Lots of fiber tests are failing on x86 (32-bits) 8.2.0beta3 #9357

andypost opened this issue Aug 17, 2022 · 16 comments

Comments

@andypost
Copy link
Contributor

Description

The following code:

TEST 2618/15794 [Zend/tests/fibers/unfinished-fiber-with-suspend-in-finally.phpt]
========DIFF========
�[1;32m001+ �[0m
�[1;31m001- fiber�[0m
�[1;31m002- inner finally�[0m
�[1;31m003- outer finally�[0m
�[1;31m004- done�[0m
========DONE========
�[1;31mFAIL�[0m Test unfinished fiber with suspend in finally [Zend/tests/fibers/unfinished-fiber-with-suspend-in-finally.phpt] 
TEST 2619/15794 [Zend/tests/fibers/unfinished-fiber-with-throw-in-finally.phpt]
========DIFF========
�[1;32m001+ �[0m
�[1;31m001- fiber�[0m
�[1;31m002- inner finally�[0m
�[1;31m003- finally exception�[0m
�[1;31m004- outer finally�[0m
�[1;31m005- Cannot suspend in a force-closed fiber�[0m
�[1;31m006- done�[0m
========DONE========
�[1;31mFAIL�[0m Test unfinished fiber with suspend in finally [Zend/tests/fibers/unfinished-fiber-with-throw-in-finally.phpt] 
TEST 2620/15794 [Zend/tests/fibers/unfinished-fiber.phpt]
========DIFF========
�[1;32m001+ �[0m
�[1;31m001- fiber�[0m
�[1;31m002- done�[0m
========DONE========

PHP Version

PHP 8.2.0beta3

Operating System

Alpinelinux edge

@andypost
Copy link
Contributor Author

the whole list is https://gitlab.alpinelinux.org/alpine/aports/-/jobs/805549

FAILED TEST SUMMARY
---------------------------------------------------------------------
Backtrace in deeply nested function call [Zend/tests/fibers/backtrace-deep-nesting.phpt]
Backtrace in nested function call [Zend/tests/fibers/backtrace-nested.phpt]
Backtrace in with object as fiber callback [Zend/tests/fibers/backtrace-object.phpt]
Multiple calls to constructor are prevented after fiber terminated [Zend/tests/fibers/call-to-ctor-of-terminated-fiber.phpt]
Catch exception thrown into fiber, then suspend again [Zend/tests/fibers/catch-then-suspend.phpt]
Catch exception thrown into fiber [Zend/tests/fibers/catch.phpt]
Print backtrace in fiber [Zend/tests/fibers/debug-backtrace.phpt]
Start on already running fiber [Zend/tests/fibers/double-start.phpt]
Error reporting change reflected inside fiber [Zend/tests/fibers/error-reporting.phpt]
Exit from fiber [Zend/tests/fibers/exit-in-fiber.phpt]
Test throwing from fiber [Zend/tests/fibers/failing-fiber.phpt]
Test throwing from fiber [Zend/tests/fibers/failing-nested-fiber.phpt]
Fast finishing fiber does not leak [Zend/tests/fibers/fast-finish-fiber.phpt]
Fatal error in new fiber [Zend/tests/fibers/fatal-error-in-fiber.phpt]
Fatal error within a nested fiber [Zend/tests/fibers/fatal-error-in-nested-fiber.phpt]
Fatal error in a fiber with other active fibers [Zend/tests/fibers/fatal-error-with-multiple-fibers.phpt]
Fiber::getCurrent() [Zend/tests/fibers/fiber-get-current.phpt]
Fiber in shutdown function [Zend/tests/fibers/fiber-in-shutdown-function.phpt]
Fiber status methods [Zend/tests/fibers/fiber-status.phpt]
GC can cleanup cycle when fiber result references fiber [Zend/tests/fibers/gc-cycle-result.phpt]
Fiber::getReturn() after bailout [Zend/tests/fibers/get-return-after-bailout.phpt]
Fiber::getReturn() after a fiber throws [Zend/tests/fibers/get-return-after-throwing.phpt]
Fiber::getReturn() in unfinished fiber [Zend/tests/fibers/get-return-in-unfinished-fiber.phpt]
Test fiber return value [Zend/tests/fibers/get-return.phpt]
Reference to invocable class retained while running [Zend/tests/fibers/invocable-class.phpt]
Cannot resume fiber within destructor [Zend/tests/fibers/no-switch-dtor-resume.phpt]
Cannot suspend fiber within destructor [Zend/tests/fibers/no-switch-dtor-suspend.phpt]
Cannot resume fiber within destructor [Zend/tests/fibers/no-switch-dtor-throw.phpt]
Cannot start a new fiber in a finally block in a force-closed fiber [Zend/tests/fibers/no-switch-force-close-finally.phpt]
Context switches are prevented during GC collect cycles [Zend/tests/fibers/no-switch-gc.phpt]
Out of Memory in a fiber [Zend/tests/fibers/out-of-memory-in-fiber.phpt]
Out of Memory in a nested fiber [Zend/tests/fibers/out-of-memory-in-nested-fiber.phpt]
Out of Memory from recursive fiber creation [Zend/tests/fibers/out-of-memory-in-recursive-fiber.phpt]
Resume previous fiber [Zend/tests/fibers/resume-previous-fiber.phpt]
Resume running fiber [Zend/tests/fibers/resume-running-fiber.phpt]
Resume terminated fiber [Zend/tests/fibers/resume-terminated-fiber.phpt]
Test resume [Zend/tests/fibers/resume.phpt]
Fiber function may return by ref, but getReturn() always returns by val [Zend/tests/fibers/return-by-ref.phpt]
Prevent switching fibers when async signals are enabled [Zend/tests/fibers/signal-async.phpt]
Prevent switching fibers when dispatching pending signals [Zend/tests/fibers/signal-dispatch.phpt]
Arguments to fiber callback [Zend/tests/fibers/start-arguments.phpt]
Suspend in force-closed fiber after shutdown [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
Suspend in force-closed fiber, catching exception thrown from destructor [Zend/tests/fibers/suspend-in-force-close-fiber-catching-exception.phpt]
Suspend in force-closed fiber [Zend/tests/fibers/suspend-in-force-close-fiber.phpt]
Suspend within nested function call [Zend/tests/fibers/suspend-in-nested-function.phpt]
Make sure exceptions are rethrown when throwing from fiber destructor [Zend/tests/fibers/throw-during-fiber-destruct.phpt]
Throw in multiple destroyed fibers after shutdown [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]
Test throwing into fiber [Zend/tests/fibers/throw.phpt]
Prevent switching fibers in tick function [Zend/tests/fibers/ticks.phpt]
Test unfinished fiber with finally block [Zend/tests/fibers/unfinished-fiber-with-finally.phpt]
Test unfinished fiber with nested try/catch blocks [Zend/tests/fibers/unfinished-fiber-with-nested-try-catch.phpt]
Test unfinished fiber with suspend in finally [Zend/tests/fibers/unfinished-fiber-with-suspend-in-finally.phpt]
Test unfinished fiber with suspend in finally [Zend/tests/fibers/unfinished-fiber-with-throw-in-finally.phpt]
Test unfinished fiber [Zend/tests/fibers/unfinished-fiber.phpt]
DBA GDBM handler test [ext/dba/tests/dba_gdbm.phpt]
ReflectionFiber backtrace test [ext/reflection/tests/ReflectionFiber_backtrace.phpt]
ReflectionFiber basic tests [ext/reflection/tests/ReflectionFiber_basic.phpt]
ReflectionFiber errors [ext/reflection/tests/ReflectionFiber_errors.phpt]
Test return type and value for expected input cos() [ext/standard/tests/math/cos_basic.phpt]
Test variations in usage of cos() [ext/standard/tests/math/cos_variation.phpt]
Test return type and value for expected input sin() [ext/standard/tests/math/sin_basic.phpt]
Test variations in usage of sin() [ext/standard/tests/math/sin_variation.phpt]
Test variations in usage of tan() [ext/standard/tests/math/tan_variation.phpt]
=================================================================
====

@andypost
Copy link
Contributor Author

Math failures are old and related to misused FPU control https://bugs.php.net/bug.php?id=79595

@cmb69 cmb69 changed the title Lots of fiber tests are failing on x86 (32-bits) 8.0.0beta3 Lots of fiber tests are failing on x86 (32-bits) 8.2.0beta3 Aug 17, 2022
@cmb69
Copy link
Contributor

cmb69 commented Aug 17, 2022

Hmm, are these tests segfaulting?

@andypost
Copy link
Contributor Author

No, just wrong results

@andypost
Copy link
Contributor Author

Just got results from 8.1.10RC1 and there's 3 more tests failed on ppc64le arch

Cannot start a new fiber in a finally block in a force-closed fiber [Zend/tests/fibers/no-switch-force-close-finally.phpt]
Suspend in force-closed fiber after shutdown [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
Throw in multiple destroyed fibers after shutdown [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]

not sure it's related but diffs are https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/37880#note_256882

@andypost
Copy link
Contributor Author

andypost commented Sep 2, 2022

Starting with 8.2.0rc1 started to fail in CI and builders - arch ppc64le

Cannot start a new fiber in a finally block in a force-closed fiber [Zend/tests/fibers/no-switch-force-close-finally.phpt]
Suspend in force-closed fiber after shutdown [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
Throw in multiple destroyed fibers after shutdown [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]

diff is

TEST 2571/15486 [Zend/tests/fibers/no-switch-force-close-finally.phpt]
========DIFF========
     finally
[1;31m002- [0m
[1;31m003- Fatal error: Uncaught FiberError: Cannot switch fibers in current execution context in %sno-switch-force-close-finally.php:%d[0m
[1;31m004- Stack trace:[0m
[1;31m005- #0 %sno-switch-force-close-finally.php(%d): Fiber->start()[0m
[1;31m006- #1 [internal function]: {closure}()[0m
[1;31m007- #2 {main}[0m
[1;31m008-   thrown in %sno-switch-force-close-finally.php on line %d[0m
========DONE========
...
TEST 2583/15486 [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
========DIFF========
     done
[1;31m002- [0m
[1;31m003- Fatal error: Uncaught FiberError: Cannot suspend in a force-closed fiber in %ssuspend-in-force-close-fiber-after-shutdown.php:%d[0m
[1;31m004- Stack trace:[0m
[1;31m005- #0 %ssuspend-in-force-close-fiber-after-shutdown.php(%d): Fiber::suspend()[0m
[1;31m006- #1 [internal function]: {closure}()[0m
[1;31m007- #2 {main}[0m
[1;31m008-   thrown in %ssuspend-in-force-close-fiber-after-shutdown.php on line %d[0m
========DONE========
...
TEST 2589/15486 [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]
========DIFF========
     done
[1;31m002- [0m
[1;31m003- Fatal error: Uncaught Exception: test1 in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php:%d[0m
[1;31m004- Stack trace:[0m
[1;31m005- #0 [internal function]: {closure}()[0m
[1;31m006- #1 {main}[0m
[1;31m007- [0m
[1;31m008- Next Exception: test2 in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php:%d[0m
[1;31m009- Stack trace:[0m
[1;31m010- #0 [internal function]: {closure}()[0m
[1;31m011- #1 {main}[0m
[1;31m012-   thrown in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php on line %d[0m
========DONE========

@andypost
Copy link
Contributor Author

andypost commented Sep 2, 2022

@cmb69 should I file separate issue?

@andypost
Copy link
Contributor Author

Started to build today 8.2.0_rc4 for Alpinelinux MR and ppc64le pipeline failed (3 tests) with

FAILED TEST SUMMARY
---------------------------------------------------------------------
Cannot start a new fiber in a finally block in a force-closed fiber [Zend/tests/fibers/no-switch-force-close-finally.phpt]
Suspend in force-closed fiber after shutdown [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
Throw in multiple destroyed fibers after shutdown [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]

I used to retry and the same 3 tests failed

TEST 2604/15917 [Zend/tests/fibers/no-switch-force-close-finally.phpt]
========DIFF========
     finally
�[1;31m002- �[0m
�[1;31m003- Fatal error: Uncaught FiberError: Cannot switch fibers in current execution context in %sno-switch-force-close-finally.php:%d�[0m
�[1;31m004- Stack trace:�[0m
�[1;31m005- #0 %sno-switch-force-close-finally.php(%d): Fiber->start()�[0m
�[1;31m006- #1 [internal function]: {closure}()�[0m
�[1;31m007- #2 {main}�[0m
�[1;31m008-   thrown in %sno-switch-force-close-finally.php on line %d�[0m
========DONE========

TEST 2620/15917 [Zend/tests/fibers/suspend-in-force-close-fiber-after-shutdown.phpt]
========DIFF========
     done
�[1;31m002- �[0m
�[1;31m003- Fatal error: Uncaught FiberError: Cannot suspend in a force-closed fiber in %ssuspend-in-force-close-fiber-after-shutdown.php:%d�[0m
�[1;31m004- Stack trace:�[0m
�[1;31m005- #0 %ssuspend-in-force-close-fiber-after-shutdown.php(%d): Fiber::suspend()�[0m
�[1;31m006- #1 [internal function]: {closure}()�[0m
�[1;31m007- #2 {main}�[0m
�[1;31m008-   thrown in %ssuspend-in-force-close-fiber-after-shutdown.php on line %d�[0m
========DONE========

TEST 2626/15917 [Zend/tests/fibers/throw-in-multiple-destroyed-fibers-after-shutdown.phpt]
========DIFF========
     done
�[1;31m002- �[0m
�[1;31m003- Fatal error: Uncaught Exception: test1 in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php:%d�[0m
�[1;31m004- Stack trace:�[0m
�[1;31m005- #0 [internal function]: {closure}()�[0m
�[1;31m006- #1 {main}�[0m
�[1;31m007- �[0m
�[1;31m008- Next Exception: test2 in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php:%d�[0m
�[1;31m009- Stack trace:�[0m
�[1;31m010- #0 [internal function]: {closure}()�[0m
�[1;31m011- #1 {main}�[0m
�[1;31m012-   thrown in %sthrow-in-multiple-destroyed-fibers-after-shutdown.php on line %d�[0m
========DONE========

@nielsdos
Copy link
Member

I'm fairly certain this is the same root cause as in GH-10398 and is probably fixed by GH-10407.

@cmb69
Copy link
Contributor

cmb69 commented Jan 28, 2023

I'm fairly certain this is the same root cause as in GH-10398 and is probably fixed by GH-10407.

Can you please check this, @andypost?

@andypost
Copy link
Contributor Author

andypost commented Feb 3, 2023

I added PR as patch and in 1h tests will show https://gitlab.alpinelinux.org/alpine/aports/-/jobs/965476

Also I enabled all previously failed x86 tests for fibers

@andypost
Copy link
Contributor Author

andypost commented Feb 3, 2023

@cmb69 please suggest a way to report https://gitlab.alpinelinux.org/alpine/aports/-/issues/14381 maybe after asm upgrades libc will has less effect

@nielsdos
Copy link
Member

nielsdos commented Feb 4, 2023

I added PR as patch and in 1h tests will show https://gitlab.alpinelinux.org/alpine/aports/-/jobs/965476

Also I enabled all previously failed x86 tests for fibers

Thank you! (For the readers who only check this thread, it is fixed indeed: #10407 (comment))

https://gitlab.alpinelinux.org/alpine/aports/-/issues/14381

I looked at the metaphone case and the slowdown was because of a lot of libc calls. I optimized it here: #10501 by removing redundant libc calls. I could also take a look at the other string functions in the near future.

@andypost
Copy link
Contributor Author

andypost commented Feb 5, 2023

Yes, it fixed all this x86 tests, probably ppc 3 tests could use separate issue

@devnexen devnexen closed this as completed Feb 5, 2023
@andypost
Copy link
Contributor Author

andypost commented Feb 5, 2023

The failed tests are #10407 (comment)

@andypost
Copy link
Contributor Author

andypost commented Feb 5, 2023

Follow-up for fibers on ppc64le #10512

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants