From: Pascal B. <pj...@in...> - 2019-02-14 00:30:24
|
> On 14 Feb 2019, at 00:50, Don Cohen <don...@is...> wrote: > > > I just followed the procedure described in the message sent to this > list on 2018-09-20 with one addition: > before the defun causing the segfault I trace every function in the > hash table section of the hyperspec. > (MAKE-HASH-TABLE HASH-TABLE-P HASH-TABLE-COUNT HASH-TABLE-REHASH-SIZE > HASH-TABLE-REHASH-THRESHOLD HASH-TABLE-SIZE HASH-TABLE-TEST GETHASH REMHASH > MAPHASH CLRHASH SXHASH WITH-HASH-TABLE-ITERATOR) > > None of these appear to be called when I do the defun and get the segfault. > > Does that show that this problem is unrelated to hashing or is there still > some way hashing could be involved? I’ve not looked at the hash table code, but in general for implementations written in C (eg. emacs lisp), you have to consider two levels: the lisp level at which CL:TRACE will work, and the C level. That’s where the rules from 11.1.2.1.2 come into play http://www.lispworks.com/documentation/HyperSpec/Body/11_abab.htm <http://www.lispworks.com/documentation/HyperSpec/Body/11_abab.htm> Specifically, any function in the CL package can be called internally thru other mechanisms than provided to the user code: the C code can call directly the C implementation of the CL functions, without passing thru the CL API. Hence TRACE is allowed NOT to work in those cases! http://www.lispworks.com/documentation/HyperSpec/Body/m_tracec.htm#trace Instead, you can use gdb to break on those C functions. -- __Pascal J. Bourguignon__ |