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

Tests fail on PHP 8.2.0 beta3 and RC1 #68

Closed
andypost opened this issue Aug 31, 2022 · 10 comments
Closed

Tests fail on PHP 8.2.0 beta3 and RC1 #68

andypost opened this issue Aug 31, 2022 · 10 comments
Labels

Comments

@andypost
Copy link

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do? If possible, provide a simple script for reproducing the error.
    rebuilding against PHP 8.2.0RC1 as API changed

  2. What did you expect to see?
    tests pass

  3. What did you see instead
    lots of failed tests

  4. What is your Xhprof version?
    2.3.5

@andypost andypost added the bug label Aug 31, 2022
@andypost
Copy link
Author

FAILED TEST SUMMARY
---------------------------------------------------------------------
XHProf: Basic Profiling Test
Author: Kannan [tests/xhprof_001.phpt]
XHProf: Test (direct and indirect) recursive function calls.
Author: Kannan [tests/xhprof_002.phpt]
XHProf: Test Class Methods, Constructors, Destructors.
Author: Kannan [tests/xhprof_003.phpt]
XHProf: Test Include File (load/run_init operations)
Author: Kannan [tests/xhprof_004.phpt]
XHProf: Test excluding call_user_func and similar functions
Author: mpal [tests/xhprof_007.phpt]
XHProf: Sampling Mode Test
Author: kannan [tests/xhprof_008.phpt]

@andypost
Copy link
Author

TEST 1/13 [tests/xhprof_001.phpt]
========DIFF========
--
     foo==>bar                               : ct=       2; wt=*;
     main()                                  : ct=       1; wt=*;
     main()==>foo                            : ct=       1; wt=*;
006+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Part 2: CPU
     foo==>bar                               : cpu=*; ct=       2; wt=*;
     main()                                  : cpu=*; ct=       1; wt=*;
     main()==>foo                            : cpu=*; ct=       1; wt=*;
013+ xhprof_disable==>xhprof_disable@1       : cpu=*; ct=       1; wt=*;
     
     Part 3: No Builtins
     foo==>bar                               : ct=       2; wt=*;
     main()                                  : ct=       1; wt=*;
019+ main()==>xhprof_disable                 : ct=       1; wt=*;
     
     Part 4: Memory
     foo==>bar                               : ct=       2; mu=*; pmu=*; wt=*;
     main()                                  : ct=       1; mu=*; pmu=*; wt=*;
     main()==>foo                            : ct=       1; mu=*; pmu=*; wt=*;
026+ xhprof_disable==>xhprof_disable@1       : ct=       1; mu=*; pmu=*; wt=*;
     
     Part 5: Memory & CPU
     foo==>bar                               : cpu=*; ct=       2; mu=*; pmu=*; wt=*;
     main()                                  : cpu=*; ct=       1; mu=*; pmu=*; wt=*;
     main()==>foo                            : cpu=*; ct=       1; mu=*; pmu=*; wt=*;
     main()==>xhprof_disable                 : cpu=*; ct=       1; mu=*; pmu=*; wt=*;
033+ xhprof_disable==>xhprof_disable@1       : cpu=*; ct=       1; mu=*; pmu=*; wt=*;
========DONE========


TEST 2/13 [tests/xhprof_002.phpt]
========DIFF========
--
     foo@3==>foo@4                           : ct=       1; wt=*;
     main()                                  : ct=       1; wt=*;
     main()==>foo                            : ct=       1; wt=*;
009+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Indirect Recursion
     bar==>foo@1                             : ct=       1; wt=*;
--
     main()                                  : ct=       1; wt=*;
     main()==>foo                            : ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
023+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
========DONE========

TEST 3/13 [tests/xhprof_003.phpt]
========DIFF========
--
     main()==>C::get_attr                    : ct=       1; wt=*;
     main()==>C::outer_static                : ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
012+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
========DONE========

TEST 4/13 [tests/xhprof_004.phpt]
========DIFF========
--
     I am in foo()...
     11
     I am in bar()...
006+ explode==>explode@1                     : ct=       2; wt=*;
007+ implode==>implode@1                     : ct=       2; wt=*;
     main()                                  : ct=       1; wt=*;
     main()==>bar                            : ct=       1; wt=*;
     main()==>dirname                        : ct=       6; wt=*;
--
     main()==>load::%sxhprof_004_inc.php%w: ct=       1; wt=*;
     main()==>load::%sxhprof_004_require.php%w: ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
017+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
========DONE========

TEST 7/13 [tests/xhprof_007.phpt]
========DIFF========
--
     main()                                  : ct=       1; wt=*;
     main()==>foo                            : ct=       1; wt=*;
     main()==>foo_array                      : ct=       1; wt=*;
011+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Part 2a: Ignore call_user_func
     hello: user_func test
--
     main()                                  : ct=       1; wt=*;
     main()==>test_call_user_class::test_call_user_func: ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
021+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Part 2b: Standard profile without parameters
     hello: user_func test
--
     main()                                  : ct=       1; wt=*;
     main()==>test_call_user_class::test_call_user_func: ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
031+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Part 2c: Standard profile with empty array of ignored functions
     hello: user_func test
--
     main()                                  : ct=       1; wt=*;
     main()==>test_call_user_class::test_call_user_func: ct=       1; wt=*;
     main()==>xhprof_disable                 : ct=       1; wt=*;
041+ xhprof_disable==>xhprof_disable@1       : ct=       1; wt=*;
     
     Part 3: Ignore call_user_func_array
     hello: calling foo_array
--
     main()                                  : cpu=*; ct=       1; wt=*;
     main()==>test_call_user_func_array      : cpu=*; ct=       1; wt=*;
     main()==>xhprof_disable                 : cpu=*; ct=       1; wt=*;
051+ xhprof_disable==>xhprof_disable@1       : cpu=*; ct=       1; wt=*;
     
     Part 4: Ignore my_call_user_func_safe
     hello: Array
     Part 4 output:
057+ is_callable==>is_callable@1             : ct=       1; wt=*;
     main()                                  : ct=       1; wt=*;
     main()==>test_my_call_user_func_safe    : ct=       1; wt=*;
061+ test_my_call_user_func_safe@1==>foo     : ct=       1; wt=*;
062+ test_my_call_user_func_safe@1==>is_callable: ct=       1; wt=*;
     test_my_call_user_func_safe==>foo       : ct=       1; wt=*;
063+ xhprof_disable==>xhprof_disable         : ct=       1; wt=*;
055- test_my_call_user_func_safe==>foo       : ct=       1; wt=*;
056- test_my_call_user_func_safe==>is_callable: ct=       1; wt=*;
     
     Part 5a: Ignore my_call_user_func_array_safe and strlen
     hello: my_user_func_array_safetest
     Part 5a output:
069+ is_callable==>is_callable@1             : ct=       1; mu=*; pmu=*; wt=*;
     main()                                  : ct=       1; mu=*; pmu=*; wt=*;
     main()==>test_my_call_user_func_array_safe: ct=       1; mu=*; pmu=*; wt=*;
     main()==>xhprof_disable                 : ct=       1; mu=*; pmu=*; wt=*;
     test_my_call_user_func_array_safe==>foo_array: ct=       1; mu=*; pmu=*; wt=*;
075+ xhprof_disable==>xhprof_disable@1       : ct=       1; mu=*; pmu=*; wt=*;
     
     Part 5b: Profile call_user_func_array and my_call_user_func_array_safe
     hello: my_user_func_array_safetest
     Part 5b output:
081+ is_callable==>is_callable@1             : ct=       1; mu=*; pmu=*; wt=*;
     main()                                  : ct=       1; mu=*; pmu=*; wt=*;
     main()==>test_my_call_user_func_array_safe: ct=       1; mu=*; pmu=*; wt=*;
     main()==>xhprof_disable                 : ct=       1; mu=*; pmu=*; wt=*;
     my_call_user_func_array_safe==>foo_array: ct=       1; mu=*; pmu=*; wt=*;
     my_call_user_func_array_safe==>is_callable: ct=       1; mu=*; pmu=*; wt=*;
088+ xhprof_disable==>xhprof_disable@1       : ct=       1; mu=*; pmu=*; wt=*;
     
     Part 5c: Only ignore call_user_func_array
     hello: my_user_func_array_safetest
     Part 5c output:
094+ is_callable==>is_callable@1             : ct=       1; mu=*; pmu=*; wt=*;
     main()                                  : ct=       1; mu=*; pmu=*; wt=*;
     main()==>test_my_call_user_func_array_safe: ct=       1; mu=*; pmu=*; wt=*;
     main()==>xhprof_disable                 : ct=       1; mu=*; pmu=*; wt=*;
098+ test_my_call_user_func_array_safe@1==>foo_array: ct=       1; mu=*; pmu=*; wt=*;
099+ test_my_call_user_func_array_safe@1==>is_callable: ct=       1; mu=*; pmu=*; wt=*;
086- test_my_call_user_func_array_safe==>foo_array: ct=       1; mu=*; pmu=*; wt=*;
087- test_my_call_user_func_array_safe==>is_callable: ct=       1; mu=*; pmu=*; wt=*;
100+ xhprof_disable==>xhprof_disable@1       : ct=       1; mu=*; pmu=*; wt=*;
========DONE========

TEST 8/13 [tests/xhprof_008.phpt]
========DIFF========
001+ Test failed
001- Test passed
002+ Count of usleep samples in one call to goo(): 0
003+ Count of usleep samples in two calls to goo(): 0
004+ Samples in one call to goo(): 
005+ array(8) {
006+   ["1661934328.700000"]=>
007+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
008+   ["1661934328.800000"]=>
009+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
010+   ["1661934328.900000"]=>
011+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
012+   ["1661934329.000000"]=>
013+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
014+   ["1661934329.100000"]=>
015+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
016+   ["1661934329.200000"]=>
017+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
018+   ["1661934329.300000"]=>
019+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
020+   ["1661934329.400000"]=>
021+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
022+ }
023+ Samples in two calls to goo(): 
024+ array(16) {
025+   ["1661934329.500000"]=>
026+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
027+   ["1661934329.600000"]=>
028+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
029+   ["1661934329.700000"]=>
030+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
031+   ["1661934329.800000"]=>
032+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
033+   ["1661934329.900000"]=>
034+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
035+   ["1661934330.000000"]=>
036+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
037+   ["1661934330.100000"]=>
038+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
039+   ["1661934330.200000"]=>
040+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
041+   ["1661934330.300000"]=>
042+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
043+   ["1661934330.400000"]=>
044+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
045+   ["1661934330.500000"]=>
046+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
047+   ["1661934330.600000"]=>
048+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
049+   ["1661934330.700000"]=>
050+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
051+   ["1661934330.800000"]=>
052+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
053+   ["1661934330.900000"]=>
054+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
055+   ["1661934331.000000"]=>
056+   string(44) "main()==>goo==>bar==>foo==>usleep==>usleep@1"
057+ }
========DONE========

@andypost
Copy link
Author

andypost commented Sep 1, 2022

@longxinH probably because of php/php-src@dc5475c

@longxinH
Copy link
Owner

longxinH commented Sep 1, 2022

@andypost Thank you very much for the information, I am also looking for relevant information

@andypost
Copy link
Author

andypost commented Sep 2, 2022

@longxinH as I se php/php-src@396b2aa also may affect

@andypost
Copy link
Author

andypost commented Sep 3, 2022

Also I see following warnings caused by zend_compile_position position addition to zend_op_array

/home/skilld/aports/testing/php82-pecl-xhprof/src/xhprof-2.3.5/extension/xhprof.c: In function 'zm_startup_xhprof':
/home/skilld/aports/testing/php82-pecl-xhprof/src/xhprof-2.3.5/extension/xhprof.c:268:26: warning: assignment to 'zend_op_array * (*)(zend_string *, const char *)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *)'} from incompatible pointer type 'zend_op_array * (*)(zend_string *, const char *, zend_compile_position)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *, enum _zend_compile_position)'} [-Wincompatible-pointer-types]
  268 |     _zend_compile_string = zend_compile_string;
      |                          ^
/home/skilld/aports/testing/php82-pecl-xhprof/src/xhprof-2.3.5/extension/xhprof.c:269:25: warning: assignment to 'zend_op_array * (*)(zend_string *, const char *, zend_compile_position)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *, enum _zend_compile_position)'} from incompatible pointer type 'zend_op_array * (*)(zend_string *, const char *)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *)'} [-Wincompatible-pointer-types]
  269 |     zend_compile_string = hp_compile_string;
      |                         ^
/home/skilld/aports/testing/php82-pecl-xhprof/src/xhprof-2.3.5/extension/xhprof.c: In function 'zm_shutdown_xhprof':
/home/skilld/aports/testing/php82-pecl-xhprof/src/xhprof-2.3.5/extension/xhprof.c:308:27: warning: assignment to 'zend_op_array * (*)(zend_string *, const char *, zend_compile_position)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *, enum _zend_compile_position)'} from incompatible pointer type 'zend_op_array * (*)(zend_string *, const char *)' {aka 'struct _zend_op_array * (*)(struct _zend_string *, const char *)'} [-Wincompatible-pointer-types]
  308 |     zend_compile_string   = _zend_compile_string;
      |                           ^

longxinH added a commit that referenced this issue Sep 4, 2022
#68 Compatible with PHP8.2RC1
@longxinH
Copy link
Owner

longxinH commented Sep 4, 2022

@andypost The latest master branch has resolved compatibility issues

@andypost
Copy link
Author

andypost commented Sep 4, 2022

@longxinH Thank you a lot! it works great! Please tag new release

@andypost andypost closed this as completed Sep 4, 2022
@andypost
Copy link
Author

andypost commented Sep 5, 2022

Thank you! pushed upgrade to Alpinelinux, php74 works too)

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

No branches or pull requests

2 participants