summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2a03fda)
* HANDLER-DESCRIPTORS-ERROR should not signal an error if there are
no bad descriptors.
* Check for EBADF and EINTR from select() explicitly, and inform the
users of any other issues via SIMPLE-PERROR + CONTINUE restart. (We
may be able to handle some others automatically as well, but let's
figure out what occurs in the wild and why first.)
provided. (reported by Cedric St-Jean)
* bug fix: circularity handling in the reader did not treat raw
structure slots correctly. (reported by Cedric St-Jean)
provided. (reported by Cedric St-Jean)
* bug fix: circularity handling in the reader did not treat raw
structure slots correctly. (reported by Cedric St-Jean)
+ * bug fix: SERVE-EVENT occasionally signaled an error about bogus
+ file descriptors when there were none.
changes in sbcl-1.0.21 relative to 1.0.20:
* new feature: the compiler is able to track the effective type of a
changes in sbcl-1.0.21 relative to 1.0.20:
* new feature: the compiler is able to track the effective type of a
(sb!unix:unix-fstat (handler-descriptor handler)))
(setf (handler-bogus handler) t)
(push handler bogus-handlers)))
(sb!unix:unix-fstat (handler-descriptor handler)))
(setf (handler-bogus handler) t)
(push handler bogus-handlers)))
- (restart-case (error "~S ~[have~;has a~:;have~] bad file descriptor~:P."
- bogus-handlers (length bogus-handlers))
- (remove-them ()
- :report "Remove bogus handlers."
- (with-descriptor-handlers
- (setf *descriptor-handlers*
- (delete-if #'handler-bogus *descriptor-handlers*))))
- (retry-them ()
- :report "Retry bogus handlers."
- (dolist (handler bogus-handlers)
- (setf (handler-bogus handler) nil)))
- (continue ()
- :report "Go on, leaving handlers marked as bogus.")))
+ (when bogus-handlers
+ (restart-case (error "~S ~[have~;has a~:;have~] bad file descriptor~:P."
+ bogus-handlers (length bogus-handlers))
+ (remove-them ()
+ :report "Remove bogus handlers."
+ (with-descriptor-handlers
+ (setf *descriptor-handlers*
+ (delete-if #'handler-bogus *descriptor-handlers*))))
+ (retry-them ()
+ :report "Retry bogus handlers."
+ (dolist (handler bogus-handlers)
+ (setf (handler-bogus handler) nil)))
+ (continue ()
+ :report "Go on, leaving handlers marked as bogus."))))
;; FIXME: Check for other errnos. Why do we return true
;; when interrupted?
#!-win32
;; FIXME: Check for other errnos. Why do we return true
;; when interrupted?
#!-win32
- (if (eql err sb!unix:eintr)
- t
- (handler-descriptors-error))
+ (case err
+ (#.sb!unix:ebadf
+ (handler-descriptors-error))
+ (#.sb!unix:eintr
+ t)
+ (otherwise
+ (with-simple-restart (continue "Ignore failure and continue.")
+ (simple-perror "Unix system call select() failed" :errno err))))
#!+win32
(handler-descriptors-error))
((plusp value)
#!+win32
(handler-descriptors-error))
((plusp value)
printf("\n");
printf(";;; error numbers\n");
printf("\n");
printf(";;; error numbers\n");
+ deferrno("ebadf", EBADF);
deferrno("enoent", ENOENT);
deferrno("eintr", EINTR);
deferrno("eio", EIO);
deferrno("enoent", ENOENT);
deferrno("eintr", EINTR);
deferrno("eio", EIO);
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)