Tests is frozen on ABCL and CCL on macOS

Open
#113 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Domain
networking

Research direction

Start by reproducing the test suite on macOS with ABCL and CCL, focusing on the listed USOCKET-TEST cases where execution freezes or reports incorrect conditions. Compare the failures in SOCKET-FAILURE, SOCKET-LISTEN, NS-HOST-NOT-FOUND-ERROR, TIMEOUT-ERROR, and the UDP test; done means the suite completes without freezing and these expected conditions pass.

Written by the indexing model from the issue text.

Description

An attempt to run test on ABCL on macOS leads to inifity freez. Console output:

Armed Bear Common Lisp 1.9.2
Java 11.0.20 MacPorts
OpenJDK 64-Bit Server VM
Low-level initialization completed in 0.177 seconds.
Startup completed in 0.97 seconds.
Doing 33 pending tests of 33 tests total.
 USOCKET-TEST::MAKE-SOCKET.1 USOCKET-TEST::MAKE-SOCKET.2
 USOCKET-TEST::SOCKET-NO-CONNECT.1 USOCKET-TEST::SOCKET-NO-CONNECT.2
 USOCKET-TEST::SOCKET-NO-CONNECT.3 USOCKET-TEST::SOCKET-FAILURE.1#<USOCKET:NETWORK-UNREACHABLE-ERROR {33386BBA}> is an instance of #<STANDARD-CLASS USOCKET:NETWORK-UNREACHABLE-ERROR {2DAD3960}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  SOCKET             NIL
Test USOCKET-TEST::SOCKET-FAILURE.2 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:TIMEOUT-ERROR NIL) (USOCKET:SOCKET-CONNECT USOCKET-TEST::+NON-EXISTING-HOST+ 80 :TIMEOUT 1) :UNREACH)
Expected value: NIL
Actual value: #<USOCKET:NETWORK-UNREACHABLE-ERROR {33386BBA}>.
 USOCKET-TEST::SOCKET-CONNECT.1 USOCKET-TEST::SOCKET-CONNECT.2
 USOCKET-TEST::SOCKET-CONNECT.3 USOCKET-TEST::SOCKET-STREAM.1
 USOCKET-TEST::SOCKET-NAME.1 USOCKET-TEST::SOCKET-NAME.2
 USOCKET-TEST::SOCKET-NAME.3 USOCKET-TEST::SOCKET-SHUTDOWN.1
 USOCKET-TEST::SOCKET-SHUTDOWN.2 USOCKET-TEST::SOCKET-SHUTDOWN.3#<TYPE-ERROR {798BB63}> is an instance of #<STANDARD-CLASS TYPE-ERROR {3BD22695}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  DATUM              #<sun.nio.ch.SocketAdaptor Socket[unconnected] {25177465}>
  EXPECTED-TYPE      STREAM
Test USOCKET-TEST::SOCKET-LISTEN.1 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (NIL NIL) (USOCKET:WITH-SOCKET-LISTENER (LISTEN "localhost" 9999 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8)) :REUSEADDRESS T :BACKLOG 1) (USOCKET:WITH-CLIENT-SOCKET (USOCKET-TEST::CLIENT USOCKET-TEST::CLIENT-STREAM "localhost" 9999 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8))) (USOCKET:WITH-SERVER-SOCKET (USOCKET-TEST::SERVER (USOCKET:SOCKET-ACCEPT LISTEN)) (WRITE-BYTE 42 USOCKET-TEST::CLIENT-STREAM) (FORCE-OUTPUT USOCKET-TEST::CLIENT-STREAM) (READ-BYTE (USOCKET:SOCKET USOCKET-TEST::SERVER))))))
Expected value: 42
Actual value: #<TYPE-ERROR {798BB63}>.
#<TYPE-ERROR {4AD46DAE}> is an instance of #<STANDARD-CLASS TYPE-ERROR {3BD22695}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  DATUM              #<sun.nio.ch.SocketAdaptor Socket[unconnected] {794A1C7F}>
  EXPECTED-TYPE      STREAM
Test USOCKET-TEST::SOCKET-LISTEN.2 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (NIL NIL) (USOCKET:WITH-SOCKET-LISTENER (LISTEN "0.0.0.0" 9999 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8)) :REUSEADDRESS T :BACKLOG 1) (USOCKET:WITH-CLIENT-SOCKET (USOCKET-TEST::CLIENT USOCKET-TEST::CLIENT-STREAM "localhost" 9999 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8))) (USOCKET:WITH-SERVER-SOCKET (USOCKET-TEST::SERVER (USOCKET:SOCKET-ACCEPT LISTEN)) (WRITE-BYTE 42 USOCKET-TEST::CLIENT-STREAM) (FORCE-OUTPUT USOCKET-TEST::CLIENT-STREAM) (READ-BYTE (USOCKET:SOCKET USOCKET-TEST::SERVER))))))
Expected value: 42
Actual value: #<TYPE-ERROR {4AD46DAE}>.
#<JAVA-EXCEPTION java.net.UnknownHostException: xxx: nodename nor servname provided, or not known {38A29C85}> is an instance of #<STANDARD-CLASS JAVA-EXCEPTION {7C551505}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     "Java exception: ~A."
  FORMAT-ARGUMENTS   (#<java.net.UnknownHostException java.net.UnknownHostException: x.... {3372C61C}>)
  CAUSE              #<java.net.UnknownHostException java.net.UnknownHostException: x.... {62458289}>
Test USOCKET-TEST::NS-HOST-NOT-FOUND-ERROR.1 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:NS-HOST-NOT-FOUND-ERROR NIL) (USOCKET:SOCKET-CONNECT "xxx" 123) T)
Expected value: NIL
Actual value: #<JAVA-EXCEPTION java.net.UnknownHostException: xxx: nodename nor servname provided, or not known {38A29C85}>.
#<USOCKET:CONNECTION-REFUSED-ERROR {47A2EAFB}> is an instance of #<STANDARD-CLASS USOCKET:CONNECTION-REFUSED-ERROR {59CE2A5F}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  SOCKET             NIL
Test USOCKET-TEST::TIMEOUT-ERROR.1 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:TIMEOUT-ERROR NIL) (USOCKET:SOCKET-CONNECT "common-lisp.net" 81 :TIMEOUT 0) T)
Expected value: NIL
Actual value: #<USOCKET:CONNECTION-REFUSED-ERROR {47A2EAFB}>.
 USOCKET-TEST::CONNECTION-REFUSED-ERROR.1#<USOCKET:SOCKET-TYPE-NOT-SUPPORTED-ERROR {1B2C917A}> is an instance of #<STANDARD-CLASS USOCKET:SOCKET-TYPE-NOT-SUPPORTED-ERROR {48698A8C}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  SOCKET             #<sun.nio.ch.ServerSocketAdaptor ServerSocket[unbound] {1D20D5C}>
Test USOCKET-TEST::OPERATION-NOT-PERMITTED-ERROR.1 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:OPERATION-NOT-PERMITTED-ERROR NIL) (USOCKET:SOCKET-LISTEN "127.0.0.1" 81) T)
Expected value: NIL
Actual value: #<USOCKET:SOCKET-TYPE-NOT-SUPPORTED-ERROR {1B2C917A}>.
 USOCKET-TEST::UDP-SEND.1 USOCKET-TEST::UDP-SEND.2
 USOCKET-TEST::MARK-H-DAVID#<USOCKET:PROTOCOL-NOT-SUPPORTED-ERROR {43DFBD2B}> is an instance of #<STANDARD-CLASS USOCKET:PROTOCOL-NOT-SUPPORTED-ERROR {37ADF558}>.
The following slots have :INSTANCE allocation:
  FORMAT-CONTROL     unbound
  FORMAT-ARGUMENTS   NIL
  SOCKET             #<USOCKET:DATAGRAM-USOCKET {6CDB8E03}>
Test USOCKET-TEST::FRANK-JAMES failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:CONNECTION-REFUSED-ERROR NIL) (LET ((USOCKET-TEST::SOCK (USOCKET:SOCKET-CONNECT "localhost" 1234 :PROTOCOL (QUOTE :DATAGRAM) :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8))))) (UNWIND-PROTECT (PROGN (USOCKET:SOCKET-SEND USOCKET-TEST::SOCK (MAKE-ARRAY 16 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8)) :INITIAL-ELEMENT 0) 16) (LET ((USOCKET-TEST::BUFFER (MAKE-ARRAY 16 :ELEMENT-TYPE (QUOTE (UNSIGNED-BYTE 8)) :INITIAL-ELEMENT 0))) (USOCKET:SOCKET-RECEIVE USOCKET-TEST::SOCK USOCKET-TEST::BUFFER 16))) (USOCKET:SOCKET-CLOSE USOCKET-TEST::SOCK))))
Expected value: NIL
Actual value: #<USOCKET:PROTOCOL-NOT-SUPPORTED-ERROR {43DFBD2B}>.

CCL blocks much faster:

Doing 33 pending tests of 33 tests total.
 USOCKET-TEST::MAKE-SOCKET.1 USOCKET-TEST::MAKE-SOCKET.2
 USOCKET-TEST::SOCKET-NO-CONNECT.1 USOCKET-TEST::SOCKET-NO-CONNECT.2
 USOCKET-TEST::SOCKET-NO-CONNECT.3 USOCKET-TEST::SOCKET-FAILURE.1#<USOCKET:HOST-UNREACHABLE-ERROR #x302000ABBBED>
Class: #<STANDARD-CLASS USOCKET:HOST-UNREACHABLE-ERROR>
Wrapper: #<CCL::CLASS-WRAPPER USOCKET:HOST-UNREACHABLE-ERROR #x3020008B578D>
Instance slots
USOCKET:SOCKET: NIL
Test USOCKET-TEST::SOCKET-FAILURE.2 failed
Form: (USOCKET-TEST::WITH-CAUGHT-CONDITIONS (USOCKET:TIMEOUT-ERROR NIL) (USOCKET:SOCKET-CONNECT USOCKET-TEST::+NON-EXISTING-HOST+ 80 :TIMEOUT 1) :UNREACH)
Expected value: NIL
Actual value: #<USOCKET:HOST-UNREACHABLE-ERROR #x302000ABBBED>.
 USOCKET-TEST::SOCKET-CONNECT.1 USOCKET-TEST::SOCKET-CONNECT.2
 USOCKET-TEST::SOCKET-CONNECT.3 USOCKET-TEST::SOCKET-STREAM.1
 USOCKET-TEST::SOCKET-NAME.1 USOCKET-TEST::SOCKET-NAME.2

Dominant language
Common Lisp
Stars
244
Forks
56
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from usocket/usocket

All issues in usocket/usocket

Similar issues

More Networking issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.