on platforms supporting dynamic-extent allocation.
* enhancement: saving cores with foreign code loaded is now supported
on MIPS/Linux in addition to the previously supported platforms.
+ * bug fix: division by zero in sb-sprof when no samples were collected
+ * bug fix: a race when a slow to arrive sigprof signal killed sbcl
* bug fix: threads stacks belonging to dead threads are freed by the
next exiting thread, no need to gc to collect thread stacks anymore
* minor incompatible change: INTERRUPT-THREAD-ERROR-ERRNO removed
(end (+ start (sb-kernel:%code-code-size code))))
(values start end)))
-;;; Record the addresses of dynamic-space code objects in
-;;; *DYNAMIC-SPACE-CODE-INFO*. Call this with GC disabled.
(defun record-dyninfo ()
(setf *dynamic-space-code-info* nil)
(flet ((record-address (code size)
;; (pushnew 'turn-off-sampling *before-gc-hooks*)
(pushnew 'adjust-samples-for-address-changes *after-gc-hooks*)
(record-dyninfo)
- (sb-sys:enable-interrupt sb-unix::sigprof #'sigprof-handler)
+ (sb-sys:enable-interrupt sb-unix:sigprof #'sigprof-handler)
(unix-setitimer :profile secs usecs secs usecs)
(setq *profiling* t)))
(values))
(setq *after-gc-hooks*
(delete 'adjust-samples-for-address-changes *after-gc-hooks*))
(unix-setitimer :profile 0 0 0 0)
- (sb-sys:enable-interrupt sb-unix::sigprof :default)
+ ;; Even with the timer shut down we cannot be sure that there is
+ ;; no undelivered sigprof. Besides, leaving the signal handler
+ ;; installed won't hurt.
(setq *sampling* nil)
(setq *profiling* nil))
(values))
(format t "~&~V,,,V<~>~%" length char))
(defun samples-percent (call-graph count)
- (* 100.0 (/ count (call-graph-nsamples call-graph))))
+ (if (> count 0)
+ (* 100.0 (/ count (call-graph-nsamples call-graph)))
+ 0))
(defun print-call-graph-header (call-graph)
(let ((nsamples (call-graph-nsamples call-graph))
;;; 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".)
-"0.9.5.29"
+"0.9.5.30"