jnthn / p6-io-socket-async-ssl

Asynchronous TLS sockets in Raku
11 stars 19 forks source link

no subtests run/segfault (macos) #55

Open coke opened 4 years ago

coke commented 4 years ago
$ zef test --verbose .
===> Testing: IO::Socket::Async::SSL:ver<0.7.5>:auth<jnthn>
[IO::Socket::Async::SSL] t/bad-incoming.t ...
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/ciphers.t ........
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/client-server.t ..
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/dh-ciphers.t .....
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/ecdh-ciphers.t ...
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/encoding.t .......
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/thread-stress.t ..
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/upgrade.t ........
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] Test Summary Report
[IO::Socket::Async::SSL] -------------------
[IO::Socket::Async::SSL] t/bad-incoming.t (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/ciphers.t      (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/client-server.t (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/dh-ciphers.t   (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/ecdh-ciphers.t (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/encoding.t     (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/thread-stress.t (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] t/upgrade.t      (Wstat: 6 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 6
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] Files=8, Tests=0, 53 wallclock secs ( 0.04 usr  0.02 sys + 72.38 cusr  8.85 csys = 81.29 CPU)
[IO::Socket::Async::SSL] Result: FAIL
===> Testing [FAIL]: IO::Socket::Async::SSL:ver<0.7.5>:auth<jnthn>
Aborting due to test failure: IO::Socket::Async::SSL:ver<0.7.5>:auth<jnthn> (use --force-test to override)
jnthn commented 4 years ago

Platform? Rakudo version? Do you have the native dependency installed?

coke commented 4 years ago

with version b28fa9ebea6595c2c3cb1a3df3419f06447add00,

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.3
BuildVersion:   19D76
coke commented 4 years ago
$ sudo port installed | grep ssl
  lynx @2.8.9rel.1_1+ssl (active)
  openssl @1.1.1d_0
  openssl @1.1.1g_0 (active)
coke commented 4 years ago
$ raku --version
This is Rakudo version 2020.05.1-232-g519a5726b built on MoarVM version 2020.05
implementing Raku 6.d.
jnthn commented 4 years ago

If you clone this repo and run one test at the command line, what is the output?

coke commented 4 years ago

Crud. I attempted to upgrade the macport openssl installation (doesn't report a change in installed version) but now instead of simply saying "no subtests run", I am getting an abort trap

$ PERL6LIB=lib perl6 t/bad-incoming.t
Abort trap: 6
coke commented 2 years ago

Updated macports, openssl after a long hiatus on this issue, improved, now getting a single explicit segfault:

$ raku --version
Welcome to Rakudo™ v2022.06.
Implementing the Raku® Programming Language v6.d.
Built on MoarVM version 2022.06.
$ sw_vers
ProductName:    macOS
ProductVersion: 11.6.1
BuildVersion:   20G224
$ git reflog
111c864 (HEAD -> master, tag: release-0.7.12, origin/master, origin/HEAD) HEAD@{0}: clone: from github.com:jnthn/p6-io-socket-async-ssl.git
$ zef test --verbose .
===> Testing: IO::Socket::Async::SSL:ver<0.7.12>:auth<zef:jnthn>
[IO::Socket::Async::SSL] t/bad-incoming.t ... ok
[IO::Socket::Async::SSL] t/ciphers.t ........ ok
[IO::Socket::Async::SSL] t/client-server.t .. ok
[IO::Socket::Async::SSL] t/dh-ciphers.t .....
[IO::Socket::Async::SSL] No subtests run
[IO::Socket::Async::SSL] t/ecdh-ciphers.t ... ok
[IO::Socket::Async::SSL] t/encoding.t ....... ok
[IO::Socket::Async::SSL] t/thread-stress.t .. ok
[IO::Socket::Async::SSL] t/upgrade.t ........ ok
[IO::Socket::Async::SSL] Test Summary Report
[IO::Socket::Async::SSL] -------------------
[IO::Socket::Async::SSL] t/dh-ciphers.t   (Wstat: 11 Tests: 0 Failed: 0)
[IO::Socket::Async::SSL]   Non-zero wait status: 11
[IO::Socket::Async::SSL]   Parse errors: No plan found in TAP output
[IO::Socket::Async::SSL] Files=8, Tests=35, 76 wallclock secs ( 0.13 usr  0.07 sys + 74.00 cusr  8.04 csys = 82.24 CPU)
[IO::Socket::Async::SSL] Result: FAIL
===> Testing [FAIL]: IO::Socket::Async::SSL:ver<0.7.12>:auth<zef:jnthn>
Aborting due to test failure: IO::Socket::Async::SSL:ver<0.7.12>:auth<zef:jnthn> (use --force-test to override)
$ raku -Ilib t/dh-ciphers.t
Segmentation fault: 11
coke commented 2 years ago

The segfault is occurring here: https://github.com/jnthn/p6-io-socket-async-ssl/blob/master/t/dh-ciphers.t#L21

coke commented 2 years ago

Non debug build gives the following with rakudo-lldb-m:

(lldb) run
Process 42966 stopped
* thread #6, stop reason = EXC_BAD_ACCESS (code=1, address=0x108)
    frame #0: 0x0000000105a3e350 libcrypto.3.dylib`BN_num_bits + 17
libcrypto.3.dylib`BN_num_bits:
->  0x105a3e350 <+17>: movslq 0x8(%rdi), %rcx
    0x105a3e354 <+21>: leal   -0x1(%rcx), %r13d
    0x105a3e358 <+25>: testb  $0x4, 0x14(%rdi)
    0x105a3e35c <+29>: jne    0x105a3e37f               ; <+64>
Target 0: (rakudo-m) stopped.
coke commented 2 years ago
(lldb) bt
* thread #3, stop reason = EXC_BAD_ACCESS (code=1, address=0x108)
  * frame #0: 0x0000000105a90350 libcrypto.3.dylib`BN_num_bits + 17
    frame #1: 0x0000000105b75236 libcrypto.3.dylib`OSSL_PARAM_BLD_push_BN + 32
    frame #2: 0x0000000105ad2804 libcrypto.3.dylib`dh_pkey_export_to + 184
    frame #3: 0x0000000105b5d88b libcrypto.3.dylib`evp_pkey_export_to_provider + 412
    frame #4: 0x0000000105b61821 libcrypto.3.dylib`EVP_PKEY_generate + 348
    frame #5: 0x00000001059c265d libssl.3.dylib`ssl_generate_pkey + 73
    frame #6: 0x0000000105a02cec libssl.3.dylib`tls_construct_server_key_exchange + 1568
    frame #7: 0x00000001059f4ce8 libssl.3.dylib`state_machine + 934
    frame #8: 0x00000001002d9665 libmoar.dylib`dcCall_x64_sysv + 97
    frame #9: 0x00000001002d90a7 libmoar.dylib`dc_callvm_call_x64 + 103
    frame #10: 0x00000001002d8ee8 libmoar.dylib`dcCallInt + 40
    frame #11: 0x0000000100169dec libmoar.dylib`MVM_nativecall_dispatch(tc=<unavailable>, res_type=0x000003736d0b4fc8, site=<unavailable>, args=MVMArgs @ 0x000070000d56ba20) at nativecall_dyncall.c:1113:5 [opt]
    frame #12: 0x00000001001d7885 libmoar.dylib`MVM_disp_program_record_end(tc=0x00000373743b8180, record=0x0000037378441b68) at program.c:3199:13 [opt]
    frame #13: 0x000000010015b4f9 libmoar.dylib`MVM_callstack_unwind_dispatch_record [inlined] handle_end_of_dispatch_record(tc=0x00000373743b8180) at callstack.c:570:39 [opt]
    frame #14: 0x000000010015b4ea libmoar.dylib`MVM_callstack_unwind_dispatch_record(tc=0x00000373743b8180) at callstack.c:872:5 [opt]
    frame #15: 0x00000001001d322f libmoar.dylib`run_dispatch(tc=0x00000373743b8180, record=0x0000037378441b68, disp=0x000003736c650138, capture=0x0000037384560580) at program.c:541:9 [opt]
    frame #16: 0x00000001001d753f libmoar.dylib`MVM_disp_program_record_end(tc=0x00000373743b8180, record=0x0000037378441b68) at program.c:3101:17 [opt]
    frame #17: 0x000000010015b291 libmoar.dylib`MVM_callstack_unwind_frame [inlined] handle_end_of_dispatch_record(tc=0x00000373743b8180) at callstack.c:570:39 [opt]
    frame #18: 0x000000010015b286 libmoar.dylib`MVM_callstack_unwind_frame at callstack.c:668:9 [opt]
    frame #19: 0x000000010015b27c libmoar.dylib`MVM_callstack_unwind_frame(tc=0x00000373743b8180, exceptional='\0') at callstack.c:840:21 [opt]
    frame #20: 0x00000001001579a2 libmoar.dylib`MVM_frame_try_return(tc=0x00000373743b8180) at frame.c:940:16 [opt]
    frame #21: 0x0000000100136137 libmoar.dylib`MVM_interp_run(tc=<unavailable>, initial_invoke=<unavailable>, invoke_data=<unavailable>, outer_runloop=0x0000000000000000) at interp.c:573:21 [opt]
    frame #22: 0x000000010015ef86 libmoar.dylib`start_thread(data=0x00000373761bd620) at threads.c:101:5 [opt]
    frame #23: 0x00007fff203c88fc libsystem_pthread.dylib`_pthread_start + 224
    frame #24: 0x00007fff203c4443 libsystem_pthread.dylib`thread_start + 15