Opened 10 years ago

Closed 10 years ago

Last modified 9 years ago

#486 closed defect (fixed)

Interrupting a tcp read operation causes a crash

Reported by: Jim Ursetto Owned by: Jim Ursetto
Priority: major Milestone: 4.9.0
Component: core libraries Version: 4.6.x
Keywords: tcp scheduler crash girl interrupted Cc:
Estimated difficulty:


In 4.6.4 at the interpreter, if I read from an open tcp port with no available data, and then interrupt the operation with Ctrl-C, the system will crash the next time I try to open a TCP connection.

This happens with 4.6.4 from Dec 12 2010 and from Jan 21 2011. It does NOT occur with 4.5.8. I did not investigate further (because Felix will figure this out in 5 seconds), but I wonder if it happened during the safer-scheduler merge.

If you prefer, I can git bisect this to track it down.

(c)2008-2010 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 4.6.4 (experimental)
macosx-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2010-12-16 on amaranth.xorinia.dim (Darwin)

; loading /Users/jim/.csirc ...
#;1> (use tcp posix)
; loading library tcp ...
; loading library posix ...
#;2> (define-values (i o) (tcp-connect "" 80))
#;3> (read-string #f i)
  C-c C-c
*** user interrupt ***
#;3> (define-values (i o) (tcp-connect "" 80))
##sys#unblock-threads-for-i/o: thread on fd-list has wrong FD

Process scheme exited abnormally with code 70

Attachments (1)

no-scheduler-panic-on-wrong-blocking-fd-and-thanks-for-the-bug-report.diff (863 bytes) - added by felix winkelmann 10 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 Changed 10 years ago by felix winkelmann

This is a diagnostic error check being introduced during the spiffy debugging phase. I will keep the error but try to change the current behavior into keeping on execution.

comment:2 Changed 10 years ago by felix winkelmann

Please try to attached patch - your example works for me now.

comment:3 Changed 10 years ago by felix winkelmann

Owner: changed from felix winkelmann to Jim Ursetto
Status: newassigned

comment:4 Changed 10 years ago by Jim Ursetto

Resolution: fixed
Status: assignedclosed

Yes, I can no longer reproduce the problem.

I was also getting a different crash previously, however I cannot currently reproduce it (even on the old unpatched version!). So closing ticket for now.

#;1> (use posix)
; loading library posix ...
#;2> (use tcp)
; loading library tcp ...
#;3> (tcp-connect-timeout 20000)
#;4> (define-values (i o) (tcp-connect "" 8081))
  C-c C-c
*** user interrupt ***
#;4> (define-values (i o) (tcp-connect "" 8081))

Bus error

comment:5 Changed 10 years ago by felix winkelmann


Milestone 4.7.0 deleted

comment:6 Changed 9 years ago by felix winkelmann


Milestone 4.8.0 deleted

Note: See TracTickets for help on using tickets.