---------------------------------------------------------------------------- inchash_eq(long 0x011f93f4, long 0x024ee580, long 0x066bff18) line 1165 + 4 bytes profile_record_consing(long 0x008abce8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x11792000, const lrecord_implementation * 0x1203dce7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0008e4a5, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x006ab7c8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x110e6000, const lrecord_implementation * 0x117917c7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0006d741, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00521718) line 226 alloc_lrecord_array(long 0x010c572b, int 0x10bc4000, const lrecord_implementation * 0x110e5717) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00054319, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x003f2538) line 226 alloc_lrecord_array(long 0x010c572b, int 0x107d1000, const lrecord_implementation * 0x10bc3537) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00040c37, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x003092a0) line 226 alloc_lrecord_array(long 0x010c572b, int 0x104c7000, const lrecord_implementation * 0x107d029f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00031d0f, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00255cc0) line 226 alloc_lrecord_array(long 0x010c572b, int 0x10271000, const lrecord_implementation * 0x104c6cbf) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0002650d, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x001cbca8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0bdeb000, const lrecord_implementation * 0x0bfb6ca7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0001d791, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00161ad8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0bc89000, const lrecord_implementation * 0x0bdeaad7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00016abd, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x001100e8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0bb78000, const lrecord_implementation * 0x0bc880e7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00011705, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x000d1448) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0baa6000, const lrecord_implementation * 0x0bb77447) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000d69d, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x000a0f68) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0ba05000, const lrecord_implementation * 0x0baa5f67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000a511, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x0007bcd8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b989000, const lrecord_implementation * 0x0ba04cd7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00007eeb, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x0005f310) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b929000, const lrecord_implementation * 0x0b98830f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000619d, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00049368) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b4a4000, const lrecord_implementation * 0x0b4ed367) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00004b13, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x000384f0) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b46b000, const lrecord_implementation * 0x0b4a34ef) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000039bf, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x0002b500) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b5f3000, const lrecord_implementation * 0x0b61e4ff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00002c69, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x000214f8) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b5d1000, const lrecord_implementation * 0x0b5f24f7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00002221, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00019998) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b5b7000, const lrecord_implementation * 0x0b5d0997) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00001a3f, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00013b00) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b181000, const lrecord_implementation * 0x0b194aff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000142f, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x0000f240) line 226 alloc_lrecord_array(long 0x010c572b, int 0x0b171000, const lrecord_implementation * 0x0b18023f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00000f7f, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x0000ba00) line 226 alloc_lrecord_array(long 0x010c572b, int 0x08cf8000, const lrecord_implementation * 0x08d039ff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00000bdd, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00008e68) line 226 alloc_lrecord_array(long 0x010c572b, int 0x06a1f000, const lrecord_implementation * 0x06a27e67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000091d, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00006d68) line 226 alloc_lrecord_array(long 0x010c572b, int 0x069a1000, const lrecord_implementation * 0x069a7d67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000006f1, long 0x066bff18) line 1168 + 93 bytes profile_record_consing(long 0x00000008) line 226 alloc_lrecord(long 0x010db7cb, const lrecord_implementation * 0x013fc700 _regex_malloc_disallowed) line 590 + 88 bytes record_unwind_protect_restoring_int(int * 0x024ef2e0, int 0x0247a799) line 6030 + 11 bytes profile_record_just_called(backtrace * 0x052820c0) line 308 Fstring_equal(long 0x01236d6d, long 0x013fd760) line 311 + 656 bytes fast_string_match(long 0x01236daf, const unsigned char * 0x05283640, long 0x013fd760, long 0x0615f4e0, long 0x00000000, int 0x0000003b, _error_behavior_struct_ {...}, int 0x0000029a) line 571 + 31 bytes fast_lisp_string_match(long 0x05283640, long 0x0615f4e0) line 579 + 31 bytes Ffind_file_name_handler(long 0x0615f4e0, long 0x055fea50) line 290 + 20 bytes Ffile_modes(long 0x024a2880) line 2636 + 46 bytes find_symbol_value_1(long 0x0107efa2, buffer * 0x00000001, console * 0x0082ee04, int 0x00000000, long 0x024d7a08, int 0x024bfa68) line 1596 + 12 bytes execute_optimized_program(const unsigned char *, int, long *) line 862 + 11 bytes ---------------------------------------------------------------------------- void inchash_eq (Lisp_Object key, Lisp_Object table, EMACS_INT offset) { Lisp_Hash_Table *ht = XHASH_TABLE (table); htentry *entries = ht->hentries; htentry *probe = entries + HASHCODE (key, ht); LINEAR_PROBING_LOOP (probe, entries, ht->size) if (EQ (probe->key, key)) break; if (!HTENTRY_CLEAR_P (probe)) probe->value = make_int (XINT (probe->value) + offset); else { probe->key = key; => probe->value = make_int (offset); ---------------------------------------------------------------------------- void profile_record_just_called (struct backtrace *bt) { in_profiling++; profile_reap_backtrace (bt); =>in_profiling--; } ---------------------------------------------------------------------------- - bt 0x052820c0 + next 0x3b592843 + function 0x00000016 + args 0x762f2f5e nargs 0x5b776569 pdlcount 0x5c5d2f5c evalargs 0x28 '(' debug_on_exit 0x5b '[' function_being_called 0x5e '^' current_total_timing_val 0x5c2a5d2f current_total_gc_usage_val 0x00002429 total_ticks_at_start 0x3b593443 total_consing_at_start 0x00000015 in_profiling 0x00000019 ============================================================================ ---------------------------------------------------------------------------- static Lisp_Object current_profile_function (void) { Lisp_Object fun; struct backtrace *bt = backtrace_list; int i; if (bt < (void*) 1000) { return QSunknown; } /* 2 because we set in_profiling when we entered the current routine. */ if (in_profiling >= 2) return QSprofile_overhead; /* Find a function actually being called. Potentially (?) there could be a number of non-calling funs -- calling foo autoloads, which tries to call bar, but requires evalling its args first, which calls baz, ... If profiling was not enabled when the function was called, just treat the function as actually called, because the info about whether we've finished the preamble will not have been recorded. */ for (i = 0; bt && !bt->function_being_called; i++) { if (bt < (void*) 1000) { #if 0 stderr_out ("bt of iteration %d is %x in current_profile_function()\n", i, bt); #endif return QSunknown; } else { bt = bt->next; if (bt < (void*) 1000) { #if 0 stderr_out ("next bt of iteration %d is %x in current_profile_function()\n", i, bt); #endif return QSunknown; } } } if (bt) { if (bt < (void*) 1000) { #if 0 stderr_out ("bt is %x in current_profile_function(), avoiding to deref *bt->function\n", bt); #endif return QSunknown; } fun = *bt->function; if (!SYMBOLP (fun) && !COMPILED_FUNCTIONP (fun) && !SUBRP (fun) && !CONSP (fun) => && !STRINGP (fun)) ---------------------------------------------------------------------------- ============================================================================ ---------------------------------------------------------------------------- Fatal error: assertion failed, file c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5 -clean\src\gc.c, line 997, GCLI_lh->type < (unsigned int) lrecord_type_count Fatal error. Your files have been auto-saved. Use `M-x recover-session' to recover them. Your version of XEmacs was distributed with a PROBLEMS file that may describe your crash, and with luck a workaround. Please check it first, but do report the crash anyway. Please report this bug by invoking M-x report-emacs-bug, or by selecting `Send Bug Report' from the Help menu. If that won't work, send ordinary email to `xemacs-beta@xemacs.org'. *MAKE SURE* to include this entire output from this crash, especially including the Lisp backtrace, as well as the XEmacs configuration from M-x describe-installation (or equivalently, the file `Installation' in the top of the build tree). If you are fortunate enough to have some sort of debugging aid installed on your system, for example Visual C++, and you can get a C stack backtrace, *please* include it, as it will make our life far easier. Lisp backtrace follows: # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # bind (ignore-invisible-lines-flag end start) count-lines(375326 375326) # (unwind-protect ...) # bind (i first art-begin head-begin head-end body-begin body-end) nndoc-dissect-buffer() # (unwind-protect ...) # bind (buf source group) nndoc-possibly-change-buffer("\\Users\\AichnerAd\\.gnuslog:.gnuslog" "c:\\User s\\AichnerAd\\.gnuslog") # bind (number dont-check server group) nndoc-request-group("\\Users\\AichnerAd\\.gnuslog:.gnuslog" "c:\\Users\\Aichne rAd\\.gnuslog" nil) # bind (gnus-command-method group dont-check gnus-command-method) byte-code("..." [gnus-server-method-cache group servers opened server method n il intern-soft gnus-group-name-to-method 2 4 "native" assoc format "%s:%s" mapca r # #] 3> "native" (nil "") format "%s" "%s:%s" gnus-server-alist gnus-predefined-server-alist] 5)] 3> "+" intern "%s-address" "" symbol-name address "-address" physical-address appen d # #] 3> "native" (nil "") format "%s" "%s:%s" gnus-server-alist gnus-predefined-server-alist] 5)] 3> request-group error "Attempted use of a nil select method" gnus-online require n nagent gnus-method-functions "%s-%s" put fboundp "Trying to require a method tha t doesn't exist" "No such function: %s" string-match "^[^:]+:" 0 result gnus-com mand-method match func gnus-select-method info gnus-opened-servers method-name . ..] 8) # (condition-case ... . ((quit (message "Quit activating %s" group) nil))) # bind (method active method dont-check scan group) gnus-activate-group("nndoc+c:\\Users\\AichnerAd\\.gnuslog:.gnuslog" scan) # bind (method-type cmethod retrieve-groups method active group info scanned-m ethods type-cache methods-cache foreign-level level newsrc level) gnus-get-unread-articles(nil) # bind (gnus-inhibit-demon nnmail-fetched-sources arg) gnus-group-get-new-news(nil) # bind (command-debug-status) call-interactively(gnus-group-get-new-news) (dispatch-event "[internal]") # (condition-case ... . error) # (catch top-level ...) ---------------------------------------------------------------------------- assert_failed(const char * 0x02625a00, int 0x02873418, const char * 0x0082ea44) line 3982 gc_incremental() line 1980 + 370 bytes find_symbol_value_1(long 0x012562c4, buffer * 0x024e4bb8, console * 0x0c96d000, int 0x0280ed00, long 0x00000001, int 0x024e61c8) line 1596 + 12 bytes find_symbol_value(long 0x024e4bb8) line 1672 + 24 bytes Fsymbol_value(long 0x0000002e) line 1722 execute_optimized_program(const unsigned char * 0x02873418, int 0x0082ea3c, long * 0x02564b90) line 682 + 109 bytes Ffuncall(int 0x0107efa2, long * 0x00000002) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x08e672bf, int 0x0082eafc, long * 0x054b9c10) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x088c9774, int 0x0082ebcc, long * 0x056e15b4) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x0b99018e, int 0x0082ec8c, long * 0x057922a8) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x0082f10b, int 0x0082ed50, long * 0x05ba9650) line 862 + 11 bytes Fbyte_code(long 0x05b58ff0, long 0x05ba9648, long 0x00000011) line 2622 + 44 bytes Feval(long 0x05ccc870) line 3675 + 69 bytes condition_case_1(long 0x05ccd288, long (long)* 0x010d3e40 Feval(long), long 0x05ccc870, long (long, long)* 0x010cf1f0 run_condition_case_handlers(long, long), long 0x024e61c8) line 1945 + 36 bytes condition_case_3(long 0x05ccc870, long 0x024e61c8, long 0x024e61c8) line 2038 + 22 bytes execute_rare_opcode(long * 0x0107ed53, const unsigned char * 0x00000013, Opcode 0x024e4f90) line 1438 + 13 bytes execute_optimized_program(const unsigned char * 0x0c220d98, int 0x024e61c8, long * 0x9c6de459) line 682 + 109 bytes ============================================================================ oddball crash with DAMAGE: popup from Visual Studio, I press [Retry] to debug ---------------------------------------------------------------------------- void __cdecl _free_dbg_lk( #else /* _MT */ _CRTIMP void __cdecl _free_dbg( #endif /* _MT */ void * pUserData, int nBlockUse ) { _CrtMemBlockHeader * pHead; /* verify heap before freeing */ if (_crtDbgFlag & _CRTDBG_CHECK_ALWAYS_DF) _ASSERTE(_CrtCheckMemory()); if (pUserData == NULL) return; /* forced failure */ if (!(*_pfnAllocHook)(_HOOK_FREE, pUserData, 0, nBlockUse, 0L, NULL, 0)) { _RPT0(_CRT_WARN, "Client hook free failure.\n"); return; } /* * If this ASSERT fails, a bad pointer has been passed in. It may be * totally bogus, or it may have been allocated from another heap. * The pointer MUST come from the 'local' heap. */ _ASSERTE(_CrtIsValidHeapPointer(pUserData)); /* get a pointer to memory block header */ pHead = pHdr(pUserData); /* verify block type */ _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)); /* if we didn't already check entire heap, at least check this object */ if (!(_crtDbgFlag & _CRTDBG_CHECK_ALWAYS_DF)) { /* check no-mans-land gaps */ if (!CheckBytes(pHead->gap, _bNoMansLandFill, nNoMansLandSize)) _RPT3(_CRT_ERROR, "DAMAGE: before %hs block (#%d) at 0x%08X.\n", szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)], pHead->lRequest, (BYTE *) pbData(pHead)); if (!CheckBytes(pbData(pHead) + pHead->nDataSize, _bNoMansLandFill, nNoMansLandSize)) _RPT3(_CRT_ERROR, "DAMAGE: after %hs block (#%d) at 0x%08X.\n", szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)], pHead->lRequest, => (BYTE *) pbData(pHead)); ---------------------------------------------------------------------------- pUserData 0x039ab780 nBlockUse 0x00000001 pHead 0x039ab760 ---------------------------------------------------------------------------- DEFUN ("kill-buffer", Fkill_buffer, 1, 1, "bKill buffer: ", /* Kill the buffer BUFFER. The argument may be a buffer or may be the name of a buffer. An argument of nil means kill the current buffer. Value is t if the buffer is actually killed, nil if user says no. The value of `kill-buffer-hook' (which may be local to that buffer), if not void, is a list of functions to be called, with no arguments, before the buffer is actually killed. The buffer to be killed is current when the hook functions are called. Any processes that have this buffer as the `process-buffer' are killed with `delete-process'. */ (buffer)) { /* This function can call lisp */ Lisp_Object buf; REGISTER struct buffer *b; struct gcpro gcpro1; if (NILP (buffer)) buf = Fcurrent_buffer (); else if (BUFFERP (buffer)) buf = buffer; else { buf = get_buffer (buffer, 0); if (NILP (buf)) nsberror (buffer); } b = XBUFFER (buf); /* OK to delete an already-deleted buffer. */ if (!BUFFER_LIVE_P (b)) return Qnil; check_allowed_operation (OPERATION_DELETE_OBJECT, buf, Qnil); /* Don't kill the minibuffer now current. */ if (EQ (buf, Vminibuffer_zero)) return Qnil; /* Or the echo area. */ if (EQ (buf, Vecho_area_buffer)) return Qnil; /* Query if the buffer is still modified. */ if (INTERACTIVE && !NILP (b->filename) && BUF_MODIFF (b) > BUF_SAVE_MODIFF (b)) { Lisp_Object killp; GCPRO1 (buf); killp = call1 (Qyes_or_no_p, (emacs_sprintf_string ("Buffer %s modified; kill anyway? ", XSTRING_DATA (b->name)))); => UNGCPRO; ---------------------------------------------------------------------------- static Lisp_Object run_condition_case_handlers (Lisp_Object val, Lisp_Object var) { /* This function can GC */ #if 0 /* FSFmacs */ if (!NILP (h.var)) specbind (h.var, c.val); val = Fprogn (Fcdr (h.chosen_clause)); /* Note that this just undoes the binding of h.var; whoever longjmp()ed to us unwound the stack to c.pdlcount before throwing. */ unbind_to (c.pdlcount); return val; #else int speccount; CHECK_TRUE_LIST (val); if (NILP (var)) return Fprogn (Fcdr (val)); /* tail call */ speccount = specpdl_depth(); specbind (var, Fcar (val)); val = Fprogn (Fcdr (val)); return unbind_to_1 (speccount, val); ---------------------------------------------------------------------------- Lisp_Object condition_case_1 (Lisp_Object handlers, Lisp_Object (*bfun) (Lisp_Object barg), Lisp_Object barg, Lisp_Object (*hfun) (Lisp_Object val, Lisp_Object harg), Lisp_Object harg) { int speccount = specpdl_depth(); struct catchtag c; #if 1 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; #else struct gcpro gcpro1; #endif #if 0 /* FSFmacs */ c.tag = Qnil; #else /* Do consing now so out-of-memory error happens up front */ /* (unbound . stuff) is a special condition-case kludge marker which is known specially by Fsignal. [[ This is an abomination, but to fix it would require either making condition_case cons (a union of the conditions of the clauses) or changing the byte-compiler output (no thanks).]] The above comment is clearly wrong. FSF does not do it this way and did not change the byte-compiler output. Instead they use a `struct handler' to hold the various values (in place of our Vcondition_handlers) and chain them together, with pointers from the `struct catchtag' to the `struct handler'. We should perhaps consider moving to something similar, but not before I merge my stderr-proc workspace, which contains changes to these functions. --ben */ c.tag = noseeum_cons (noseeum_cons (Qunbound, handlers), Vcondition_handlers); #endif c.val = Qnil; c.actual_tag = Qnil; c.backtrace = Qnil; c.backlist = backtrace_list; #if 0 /* FSFmacs */ /* #### */ c.handlerlist = handlerlist; #endif c.lisp_eval_depth = lisp_eval_depth; c.pdlcount = specpdl_depth(); #if 0 /* FSFmacs */ c.poll_suppress_count = async_timer_suppress_count; #endif c.gcpro = gcprolist; /* #### FSFmacs does the following statement *after* the setjmp(). */ #if 1 c.next = catchlist; #endif if (SETJMP (c.jmp)) { #if 1 GCPRO2(harg, c.val); #endif /* throw does ungcpro, etc */ #if 1 => RETURN_UNGCPRO ((*hfun) (c.val, harg)); ============================================================================ pretty early crash ---------------------------------------------------------------------------- Fatal error: assertion failed, file c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5 -clean\src\gc.c, line 997, GCLI_lh->type < (unsigned int) lrecord_type_count Fatal error. Your files have been auto-saved. Use `M-x recover-session' to recover them. Your version of XEmacs was distributed with a PROBLEMS file that may describe your crash, and with luck a workaround. Please check it first, but do report the crash anyway. Please report this bug by invoking M-x report-emacs-bug, or by selecting `Send Bug Report' from the Help menu. If that won't work, send ordinary email to `xemacs-beta@xemacs.org'. *MAKE SURE* to include this entire output from this crash, especially including the Lisp backtrace, as well as the XEmacs configuration from M-x describe-installation (or equivalently, the file `Installation' in the top of the build tree). If you are fortunate enough to have some sort of debugging aid installed on your system, for example Visual C++, and you can get a C stack backtrace, *please* include it, as it will make our life far easier. Lisp backtrace follows: # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) garbage-collect() # bind (idle-time buf-size delay-level now delay) auto-save-itimer() # bind (time-elapsed itimers itimer next-wakeup last-event-time this-command i nhibit-quit quit-flag current-itimer) # (unwind-protect ...) # bind (match-data) byte-code("..." [this-command inhibit-quit quit-flag match-data itimer current -itimer match-data ((store-match-data match-data)) nil itimer-uses-arguments app ly itimer-function itimer-function-arguments last-event-time next-wakeup itimers time-elapsed] 5) # (condition-case ... . ((error (byte-code "Ç-Ç+Ç- !Ç!#ź" [condition-data itimer message "itimer \"%s\" signaled: %s" itimer-name prin1-to-string] 5)) (qu it (byte-code "Ç-Ç-Ç!\"ź" [itimer message "itimer \"%s\" quit" itimer-name] 4)) )) # (unwind-protect ...) # bind (itimers itimer next-wakeup idle-time last-event-time recorded-run-time inhibit-quit time-elapsed) itimer-run-expired-timers(0.25) # bind (sleep elapsed now itimer-inside-driver inhibit-quit ignored) itimer-timer-driver(nil) ("execute_internal_event()" "[internal]") (dispatch-event "[internal]") # (condition-case ... . error) # (catch top-level ...) ---------------------------------------------------------------------------- assert_failed(const char * 0x00000000, int 0x0082f6e8, const char * 0x010726bc) line 3982 gc_full() line 1960 + 285 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3921 + 19 bytes execute_optimized_program(const unsigned char * 0x08039bb2, int 0x0082f6e0, long * 0x027132f0) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x0082f81b, int 0x0082f7a0, long * 0x0271e5f8) line 862 + 11 bytes Fbyte_code(long 0x0252e7d0, long 0x0271e5f0, long 0x0000000b) line 2622 + 44 bytes Feval(long 0x026ea4b0) line 3675 + 69 bytes condition_case_1(long 0x026ea438, long (long)* 0x010d3e40 Feval(long), long 0x026ea4b0, long (long, long)* 0x010cf1f0 run_condition_case_handlers(long, long), long 0x024caf78) line 1945 + 36 bytes condition_case_3(long 0x026ea4b0, long 0x024caf78, long 0x024e61c8) line 2038 + 22 bytes execute_rare_opcode(long * 0x0107ed53, const unsigned char * 0x00000007, Opcode 0x0082fb44) line 1438 + 13 bytes execute_optimized_program(const unsigned char * 0x00000000, int 0x00000000, long * 0xa76df00c) line 682 + 109 bytes ---------------------------------------------------------------------------- void gc_full (void) =>{ gc (0); } ============================================================================ No crashes (long runnning and two hibernation cycles) with early unconditional exit from current_profile_function with QSunknown. ---------------------------------------------------------------------------- (profiling-active-p) t t t t t t t (get-profiling-info) (timing # total-timing # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 0 frame-modified-tick 0 w3m-favicon-usable-p 947 ...) 0x32d41c> call-count # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 3 frame-modified-tick 24798 w3m-favicon-usable-p 1 ...) 0x32abbb> gc-usage # total-gc-usage # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 1260 frame-modified-tick 0 w3m-favicon-usable-p 20344 ...) 0x327575>) (timing # total-timing # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 0 frame-modified-tick 0 w3m-favicon-usable-p 947 ...) 0x3f13c3> call-count # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 3 frame-modified-tick 23073 w3m-favicon-usable-p 1 ...) 0x3eeb62> gc-usage # total-gc-usage # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 1260 frame-modified-tick 0 w3m-favicon-usable-p 20344 ...) 0x3eb51c>) (timing # total-timing # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 0 frame-modified-tick 0 w3m-favicon-usable-p 947 ...) 0x3f34aa> call-count # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 2 frame-modified-tick 13825 w3m-favicon-usable-p 1 ...) 0x3f0c49> gc-usage # total-gc-usage # characterp 0 char-to-string ?\ " " ?- "-" minibuffer-completion-help " [Complete, but not unique]" " [Ambiguous]" erase-buffer match (byte-code "Ä W«~Å H~ H~\"«~ T~ªjÆÇÈ\"~ªbÉ~" [completion buffer-string len n 0 char-equal throw match nil t] 5) re-search-forward "\\W" minibuffer-completion-table minibuffer-completion-predicate last-command-char completion-auto-help n] 5 ("c:\\Hacking\\cvs.xemacs.org\\XEmacs\\xemacs-21.5-clean\\lisp\\minibuf.elc" . 18843) nil> 872 frame-modified-tick 0 w3m-favicon-usable-p 20344 ...) 0x3ed603>) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing # call-count # gc-usage # total-gc-usage #) (timing # total-timing #] 3> 15 gnus-message 39 completer-match-record 0 font-lock-fontify-pending-extents 3 ...) 0x133e1f> call-count #] 3> 171 gnus-message 80 completer-match-record 3 font-lock-fontify-pending-extents 13 ...) 0x132be2> gc-usage # total-gc-usage #] 3> 57236 gnus-message 153776 completer-match-record 1724 font-lock-fontify-pending-extents 3796 ...) 0x130bc0>) (timing # total-timing #] 3> 15 gnus-message 39 completer-match-record 0 font-lock-fontify-pending-extents 3 ...) 0x11ee3c> call-count #] 3> 171 gnus-message 80 completer-match-record 3 font-lock-fontify-pending-extents 13 ...) 0x11dbff> gc-usage # total-gc-usage #] 3> 57236 gnus-message 153776 completer-match-record 1724 font-lock-fontify-pending-extents 3796 ...) 0x11bbdd>) (timing # total-timing #] 3> 15 gnus-message 39 completer-match-record 0 font-lock-fontify-pending-extents 3 ...) 0x112b03> call-count #] 3> 171 gnus-message 80 completer-match-record 3 font-lock-fontify-pending-extents 13 ...) 0x1118c6> gc-usage # total-gc-usage #] 3> 57236 gnus-message 153776 completer-match-record 1724 font-lock-fontify-pending-extents 3796 ...) 0x10f8a4>) ============================================================================ Took a long time to crash this time with my extensive stderr_out code, which never triggered so far! ---------------------------------------------------------------------------- current_profile_function() line 196 + 7 bytes sigprof_handler(int 0x0000001d) line 323 + 5 bytes setitimer_helper_proc(unsigned int 0x00006251, unsigned int 0x00000000, unsigned long 0x0000001d, unsigned long 0x00000000, unsigned long 0x00000000) line 788 + 19 bytes WINMM! 76b454f3() WINMM! 76b5ae36() WINMM! 76b5af3a() KERNEL32! 7c80b50b() ---------------------------------------------------------------------------- static Lisp_Object current_profile_function (void) { Lisp_Object fun; struct backtrace *bt = backtrace_list; int i; /* 2 because we set in_profiling when we entered the current routine. */ if (in_profiling >= 2) return QSprofile_overhead; /* Find a function actually being called. Potentially (?) there could be a number of non-calling funs -- calling foo autoloads, which tries to call bar, but requires evalling its args first, which calls baz, ... If profiling was not enabled when the function was called, just treat the function as actually called, because the info about whether we've finished the preamble will not have been recorded. */ for (i = 0; bt && !bt->function_being_called; i++) { if (bt < (void*) 1000) { stderr_out ("bt of iteration %d is %x in current_profile_function()\n", i, bt); return QSprocessing_events_at_top_level; } else { bt = bt->next; if (bt < (void*) 1000) { stderr_out ("next bt of iteration %d is %x in current_profile_function()\n", i, bt); return QSprocessing_events_at_top_level; } } } if (bt) { fun = *bt->function; if (!SYMBOLP (fun) && !COMPILED_FUNCTIONP (fun) && !SUBRP (fun) && !CONSP (fun) => && !STRINGP (fun)) fun = QSunknown; } else fun = QSprocessing_events_at_top_level; return fun; } Stack might be unreliable at this time, like experienced before ---------------------------------------------------------------------------- line CXX0017: Error: symbol "line" not found bt CXX0017: Error: symbol "bt" not found - backtrace_list 0x0082fc30 - next 0x0082fc98 + next 0x00000000 + function 0x013f82a4 Qnext_event + args 0x00000000 nargs 0xffffffff pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x0000027f current_total_gc_usage_val 0x0020fed0 total_ticks_at_start 0x001619ac total_consing_at_start 0xe5695b94 + function 0x013f832c QSnext_event_internal + args 0x00000000 nargs 0xffffffff pdlcount 0x00000003 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000012 current_total_gc_usage_val 0x0000c6b4 total_ticks_at_start 0x001619ac total_consing_at_start 0xe5695c48 &backtrace Error: cannot display value bt CXX0017: Error: symbol "bt" not found &bt CXX0017: Error: symbol "bt" not found ============================================================================ and another letting gnus idle for ca. 5 minutes unattended with profiling on. ---------------------------------------------------------------------------- current_profile_function() line 168 + 4 bytes sigprof_handler(int 0x0000001d) line 306 + 5 bytes setitimer_helper_proc(unsigned int 0x0000f631, unsigned int 0x00000000, unsigned long 0x0000001d, unsigned long 0x00000000, unsigned long 0x00000000) line 788 + 19 bytes WINMM! 76b454f3() WINMM! 76b5ae36() WINMM! 76b5af3a() KERNEL32! 7c80b50b() ---------------------------------------------------------------------------- - backtrace_list 0x0082fc30 - next 0x0082fc98 - next 0x00000000 next CXX0030: Error: expression cannot be evaluated function CXX0030: Error: expression cannot be evaluated args CXX0030: Error: expression cannot be evaluated nargs CXX0030: Error: expression cannot be evaluated pdlcount CXX0030: Error: expression cannot be evaluated evalargs CXX0030: Error: expression cannot be evaluated debug_on_exit CXX0030: Error: expression cannot be evaluated function_being_called CXX0030: Error: expression cannot be evaluated current_total_timing_val CXX0030: Error: expression cannot be evaluated current_total_gc_usage_val CXX0030: Error: expression cannot be evaluated total_ticks_at_start CXX0030: Error: expression cannot be evaluated total_consing_at_start CXX0030: Error: expression cannot be evaluated + function 0x013f8224 Qnext_event + args 0x00000000 nargs 0xffffffff pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000004 current_total_gc_usage_val 0x000719a8 total_ticks_at_start 0x000359cc total_consing_at_start 0xff78f374 + function 0x013f82ac QSnext_event_internal + args 0x00000000 nargs 0xffffffff pdlcount 0x00000003 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000002 current_total_gc_usage_val 0x00003b68 total_ticks_at_start 0x000359cc total_consing_at_start 0xff78feb8 in_profiling 0x00000001 QSprofile_overhead 0x024ee580 ============================================================================ provoked by playing tetris with profiling on. Looks like another badly terminated next pointer with function_being_called being zero. Hmmh, data does not support that theory! This time not involving Qdispatch_event! ---------------------------------------------------------------------------- current_profile_function() line 168 + 4 bytes sigprof_handler(int 0x0000001d) line 306 + 5 bytes setitimer_helper_proc(unsigned int 0x0000f631, unsigned int 0x00000000, unsigned long 0x0000001d, unsigned long 0x00000000, unsigned long 0x00000000) line 788 + 19 bytes WINMM! 76b454f3() WINMM! 76b5ae36() WINMM! 76b5af3a() KERNEL32! 7c80b50b() ---------------------------------------------------------------------------- static Lisp_Object current_profile_function (void) { Lisp_Object fun; struct backtrace *bt = backtrace_list; /* 2 because we set in_profiling when we entered the current routine. */ if (in_profiling >= 2) return QSprofile_overhead; /* Find a function actually being called. Potentially (?) there could be a number of non-calling funs -- calling foo autoloads, which tries to call bar, but requires evalling its args first, which calls baz, ... If profiling was not enabled when the function was called, just treat the function as actually called, because the info about whether we've finished the preamble will not have been recorded. */ =>for (; bt && !bt->function_being_called; bt = bt->next) ---------------------------------------------------------------------------- - backtrace_list 0x0082fc30 - next 0x0082fc98 - next 0x00000000 next CXX0030: Error: expression cannot be evaluated function CXX0030: Error: expression cannot be evaluated args CXX0030: Error: expression cannot be evaluated nargs CXX0030: Error: expression cannot be evaluated pdlcount CXX0030: Error: expression cannot be evaluated evalargs CXX0030: Error: expression cannot be evaluated debug_on_exit CXX0030: Error: expression cannot be evaluated function_being_called CXX0030: Error: expression cannot be evaluated current_total_timing_val CXX0030: Error: expression cannot be evaluated current_total_gc_usage_val CXX0030: Error: expression cannot be evaluated total_ticks_at_start CXX0030: Error: expression cannot be evaluated total_consing_at_start CXX0030: Error: expression cannot be evaluated + function 0x013f8224 Qnext_event + args 0x00000000 nargs 0xffffffff pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00003634 current_total_gc_usage_val 0x063e23a8 total_ticks_at_start 0x00061ce3 total_consing_at_start 0xf9716e8c + function 0x013f82ac QSnext_event_internal + args 0x00000000 nargs 0xffffffff pdlcount 0x00000003 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x0000008e current_total_gc_usage_val 0x00008d34 total_ticks_at_start 0x00061ce3 total_consing_at_start 0xf9716f40 in_profiling 0x00000001 QSprofile_overhead 0x024ee580 ============================================================================ same reproducible crash as below: occur PRE-COMMAND in $TEMP\command-reporting.txt zero next pointer in bt record with function_being_called zero (why is function_being_called shown as non-zero in debugger?) again, + function 0x013f8280 Qdispatch_event is the last valid record! ---------------------------------------------------------------------------- - backtrace_list 0x0082f4a0 - next 0x0082f6cc - next 0x0082f7a0 - next 0x0082f85c - next 0x0082f9b8 - next 0x0082fa30 - next 0x0082faf8 - next 0x0082fc00 - next 0x0082fc94 + next 0x00000000 + function 0x013f8280 Qdispatch_event + args 0x00000000 nargs 0xffffffff pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x000037c0 total_ticks_at_start 0x000008aa total_consing_at_start 0x01573b9c + function 0x013f75e8 _Qcall_interactively + args 0x0082fc2c nargs 0x00000001 pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000008aa total_consing_at_start 0x01573ed0 + function 0x0082fb34 + args 0x0082fb38 nargs 0x00000001 pdlcount 0x00000002 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000008aa total_consing_at_start 0x01573ed0 + function 0x0082fa68 + args 0x0082fa6c nargs 0x00000002 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000008d4 total_consing_at_start 0x01584a2c + function 0x013f75e8 _Qcall_interactively + args 0x0082f9e4 nargs 0x00000001 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000019 current_total_gc_usage_val 0x0000035c total_ticks_at_start 0x00000927 total_consing_at_start 0x015d4d7c + function 0x0082f890 + args 0x0082f894 nargs 0x00000002 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x00000937 total_consing_at_start 0x015e65d4 + function 0x0082f7d8 + args 0x0082f7dc nargs 0x00000003 pdlcount 0x00000007 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x00000937 total_consing_at_start 0x015e6600 + function 0x0082f704 + args 0x0082f708 nargs 0x00000009 pdlcount 0x0000000f evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x00000938 total_consing_at_start 0x015e6fa8 + function 0x013f84e4 long QSin_map_extents_internal + args 0x00000000 nargs 0xffffffff pdlcount 0x0000002d evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x0001fc8f current_total_gc_usage_val 0x025165a8 total_ticks_at_start 0x00021bdb total_consing_at_start 0xfcbc050c in_profiling 0x00000001 QSprofile_overhead 0x024ee580 ============================================================================ ---------------------------------------------------------------------------- current_profile_function() line 168 + 4 bytes sigprof_handler(int 0x0000001d) line 306 + 5 bytes setitimer_helper_proc(unsigned int 0x00003461, unsigned int 0x00000000, unsigned long 0x0000001d, unsigned long 0x00000000, unsigned long 0x00000000) line 788 + 19 bytes WINMM! 76b454f3() WINMM! 76b5ae36() WINMM! 76b5af3a() KERNEL32! 7c80b50b() ---------------------------------------------------------------------------- - backtrace_list 0x0082f47c - next 0x0082f6cc - next 0x0082f7a0 - next 0x0082f85c - next 0x0082f9b8 - next 0x0082fa30 - next 0x0082faf8 - next 0x0082fc00 - next 0x0082fc94 + next 0x00000000 + function 0x013f8280 Qdispatch_event + args 0x00000000 nargs 0xffffffff pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00002000 total_ticks_at_start 0x0000194b total_consing_at_start 0x01294a88 + function 0x013f75e8 _Qcall_interactively + args 0x0082fc2c nargs 0x00000001 pdlcount 0x00000001 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x0000194b total_consing_at_start 0x01294d70 + function 0x0082fb34 + args 0x0082fb38 nargs 0x00000001 pdlcount 0x00000002 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x0000194b total_consing_at_start 0x01294d70 + function 0x0082fa68 + args 0x0082fa6c nargs 0x00000002 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x00001968 total_consing_at_start 0x012aa35c + function 0x013f75e8 _Qcall_interactively + args 0x0082f9e4 nargs 0x00000001 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000001 current_total_gc_usage_val 0x00000090 total_ticks_at_start 0x000019b9 total_consing_at_start 0x012faedc + function 0x0082f890 + args 0x0082f894 nargs 0x00000002 pdlcount 0x00000005 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000019c8 total_consing_at_start 0x0130d41c + function 0x0082f7d8 + args 0x0082f7dc nargs 0x00000003 pdlcount 0x00000007 evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000019c8 total_consing_at_start 0x0130d448 + function 0x0082f704 + args 0x0082f708 nargs 0x00000009 pdlcount 0x0000000f evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x00000000 current_total_gc_usage_val 0x00000000 total_ticks_at_start 0x000019c8 total_consing_at_start 0x0130ddac + function 0x013f84e4 long QSin_map_extents_internal + args 0x00000000 nargs 0xffffffff pdlcount 0x0000002d evalargs 0x00 '' debug_on_exit 0x00 '' function_being_called 0x01 '' current_total_timing_val 0x000006ea current_total_gc_usage_val 0xfe1aff3c total_ticks_at_start 0x000021c3 total_consing_at_start 0xfffb10f8 in_profiling 0x00000001 QSprofile_overhead 0x024ee580 ============================================================================ No lisp backtrace inchash_eq(long 0x011f93f4, long 0x024ee580, long 0x08733150) line 1156 profile_record_consing(long 0x0130cff8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x16bd1000, const lrecord_implementation * 0x17eddff7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00138a07, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00ea7860) line 192 alloc_lrecord_array(long 0x010c572b, int 0x15663000, const lrecord_implementation * 0x1650a85f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000f07ab, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00b45c10) line 192 alloc_lrecord_array(long 0x010c572b, int 0x14b1d000, const lrecord_implementation * 0x15662c0f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000b8fbd, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x008abce8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x14271000, const lrecord_implementation * 0x14b1cce7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0008e4a5, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x006ab7c8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0e440000, const lrecord_implementation * 0x0eaeb7c7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0006d741, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00521718) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0df1e000, const lrecord_implementation * 0x0e43f717) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00054319, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x003f2538) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0db2b000, const lrecord_implementation * 0x0df1d537) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00040c37, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x003092a0) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0d821000, const lrecord_implementation * 0x0db2a29f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00031d0f, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00255cc0) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0d49b000, const lrecord_implementation * 0x0d6f0cbf) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0002650d, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x001cbca8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0d2cf000, const lrecord_implementation * 0x0d49aca7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0001d791, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00161ad8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0d16d000, const lrecord_implementation * 0x0d2cead7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00016abd, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x001100e8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0d05c000, const lrecord_implementation * 0x0d16c0e7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00011705, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x000d1448) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0cf8a000, const lrecord_implementation * 0x0d05b447) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000d69d, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x000a0f68) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0cee9000, const lrecord_implementation * 0x0cf89f67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000a511, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0007bcd8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0ce6d000, const lrecord_implementation * 0x0cee8cd7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00007eeb, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0005f310) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0ce0d000, const lrecord_implementation * 0x0ce6c30f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000619d, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00049368) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0cdc3000, const lrecord_implementation * 0x0ce0c367) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00004b13, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x000384f0) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b872000, const lrecord_implementation * 0x0b8aa4ef) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000039bf, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0002b500) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b846000, const lrecord_implementation * 0x0b8714ff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00002c69, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x000214f8) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b814000, const lrecord_implementation * 0x0b8354f7) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00002221, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00019998) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b78d000, const lrecord_implementation * 0x0b7a6997) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00001a3f, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00013b00) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b7bd000, const lrecord_implementation * 0x0b7d0aff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000142f, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0000f240) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0b5bb000, const lrecord_implementation * 0x0b5ca23f) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00000f7f, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0000ba00) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0caf6000, const lrecord_implementation * 0x0cb019ff) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x00000bdd, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00008e68) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0cceb000, const lrecord_implementation * 0x0ccf3e67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x0000091d, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x00006d68) line 192 alloc_lrecord_array(long 0x010c572b, int 0x0cd42000, const lrecord_implementation * 0x0cd48d67) line 646 + 88 bytes inchash_eq(long 0x011f93f4, long 0x000006f1, long 0x08733150) line 1168 + 93 bytes profile_record_consing(long 0x0000000c) line 192 alloc_lrecord(long 0x010d5ec9, const lrecord_implementation * 0x081740dc) line 590 + 88 bytes Ffuncall(int 0x010d74c3, long * 0x00000000) line 3961 + 61 bytes run_hook_with_args_in_buffer(buffer * 0x010d71ae, int 0x024e61c8, long * 0x00000001, run_hooks_condition 0x0082f0a4) line 4444 + 13 bytes Frun_hooks(int 0x00000001, long * 0x0082f0a4) line 4309 + 16 bytes Ffuncall(int 0x0107efa2, long * 0x00000001) line 3945 + 9 bytes execute_optimized_program(const unsigned char * 0x028d5e3a, int 0x0082f09c, long * 0x0255f178) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000002) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x08f373b9, int 0x0082f15c, long * 0x02724164) line 862 + 11 bytes Ffuncall(int 0x0107efa2, long * 0x00000000) line 3961 + 874 bytes execute_optimized_program(const unsigned char * 0x0082f274, int 0x0082f214, long * 0x0255dc60) line 862 + 11 bytes Fbyte_code(long 0x0251c310, long 0x0255dc58, long 0x0000000f) line 2622 + 44 bytes Feval(long 0x026ccfb4) line 3675 + 69 bytes condition_case_1(long 0x026ccf84, long (long)* 0x010d3e40 Feval(long), long 0x026ccfb4, long (long, long)* 0x010cf1f0 run_condition_case_handlers(long, long), long 0x024e37e0) line 1945 + 36 bytes condition_case_3(long 0x026ccfb4, long 0x024e37e0, long 0x024e61c8) line 2038 + 22 bytes execute_rare_opcode(long * 0x01081265, const unsigned char * 0x00000000, Opcode 0x0107ed53) line 1438 + 13 bytes optimize_compiled_function(long 0x026ccfa8) line 2065 + 18 bytes 024e5510() ---------------------------------------------------------------------------- /* A version of Fputhash() that increments the value by the specified amount and dispenses will all error checks. Assumes that tables does comparison using EQ. Used by the profiling routines to avoid overhead -- profiling overhead was being recorded at up to 15% of the total time. */ void inchash_eq (Lisp_Object key, Lisp_Object table, EMACS_INT offset) { Lisp_Hash_Table *ht = XHASH_TABLE (table); htentry *entries = ht->hentries; htentry *probe = entries + HASHCODE (key, ht); =>LINEAR_PROBING_LOOP (probe, entries, ht->size) ---------------------------------------------------------------------------- /* ARGS[0] should be a hook symbol. Call each of the functions in the hook value, passing each of them as arguments all the rest of ARGS (all NARGS - 1 elements). COND specifies a condition to test after each call to decide whether to stop. The caller (or its caller, etc) must gcpro all of ARGS, except that it isn't necessary to gcpro ARGS[0]. */ Lisp_Object run_hook_with_args_in_buffer (struct buffer *buf, int nargs, Lisp_Object *args, enum run_hooks_condition cond) { Lisp_Object sym, val, ret; if (!initialized || preparing_for_armageddon) /* We need to bail out of here pronto. */ return Qnil; #ifndef NEW_GC /* Whenever gc_in_progress is true, preparing_for_armageddon will also be true unless something is really hosed. */ assert (!gc_in_progress); #endif /* not NEW_GC */ sym = args[0]; val = symbol_value_in_buffer (sym, wrap_buffer (buf)); ret = (cond == RUN_HOOKS_UNTIL_FAILURE ? Qt : Qnil); if (UNBOUNDP (val) || NILP (val)) return ret; else if (!CONSP (val) || EQ (XCAR (val), Qlambda)) { args[0] = val; return Ffuncall (nargs, args); } else { struct gcpro gcpro1, gcpro2, gcpro3; Lisp_Object globals = Qnil; GCPRO3 (sym, val, globals); for (; CONSP (val) && ((cond == RUN_HOOKS_TO_COMPLETION) || (cond == RUN_HOOKS_UNTIL_SUCCESS ? NILP (ret) : !NILP (ret))); val = XCDR (val)) { if (EQ (XCAR (val), Qt)) { /* t indicates this hook has a local binding; it means to run the global binding too. */ globals = Fdefault_value (sym); if ((! CONSP (globals) || EQ (XCAR (globals), Qlambda)) && ! NILP (globals)) { args[0] = globals; ret = Ffuncall (nargs, args); } else { for (; CONSP (globals) && ((cond == RUN_HOOKS_TO_COMPLETION) || (cond == RUN_HOOKS_UNTIL_SUCCESS ? NILP (ret) : !NILP (ret))); globals = XCDR (globals)) { args[0] = XCAR (globals); /* In a global value, t should not occur. If it does, we must ignore it to avoid an endless loop. */ if (!EQ (args[0], Qt)) ret = Ffuncall (nargs, args); } } } else { args[0] = XCAR (val); => ret = Ffuncall (nargs, args); ---------------------------------------------------------------------------- + args 0x00000001 nargs 0x024e61c8 val 0x024ebe28 args IS AN INVALID POINTER! ---------------------------------------------------------------------------- ============================================================================ XEmacs 21.5 (beta27) "fiddleheads" (+CVS-20060817) [Lucid] (i586-pc-win32, Mule) of Sun Aug 20 2006 on TANG Fatal error: assertion failed, file c:\Hacking\cvs.xemacs.org\XEmacs\xemacs-21.5 -clean\src\redisplay-output.c, line 1687, db->xpos >= 0 && db->ypos >= 0 Fatal error. Your files have been auto-saved. Use `M-x recover-session' to recover them. Your version of XEmacs was distributed with a PROBLEMS file that may describe your crash, and with luck a workaround. Please check it first, but do report the crash anyway. Please report this bug by invoking M-x report-emacs-bug, or by selecting `Send Bug Report' from the Help menu. If that won't work, send ordinary email to `xemacs-beta@xemacs.org'. *MAKE SURE* to include this entire output from this crash, especially including the Lisp backtrace, as well as the XEmacs configuration from M-x describe-installation (or equivalently, the file `Installation' in the top of the build tree). If you are fortunate enough to have some sort of debugging aid installed on your system, for example Visual C++, and you can get a C stack backtrace, *please* include it, as it will make our life far easier. Lisp backtrace follows: # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # bind (inhibit-quit) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) # (unwind-protect ...) ("(in redisplay)" "[internal]") ("next_event_internal()" "[internal]") # (unwind-protect ...) # bind (inhibit-quit) (next-event "[internal]") # (condition-case ... . error) # (catch top-level ...) ---------------------------------------------------------------------------- assert_failed(const char * 0x0bcb9000, int 0x06131c30, const char * 0x0082ec50) line 3982 mswindows_output_display_block(window * 0x011fea47, display_line * 0x0bcb9000, int 0x01ebac10, int 0x00000000, int 0x00000000, int 0x00000012, int 0x00000000, int 0x00000000, int 0x00000000) line 1049 output_display_line(window * 0x012038f6, display_line_dynarr * 0x0bcb9000, display_line_dynarr * 0x01e20808, int 0x03caea90, int 0x00000000, int 0x00000000) line 743 redisplay_output_window(window * 0x01218bad) line 2448 + 13 bytes redisplay_window(long 0x0121726a, int 0x0000000a) line 6541 + 6 bytes redisplay_frame(frame * 0x01219c8c, int 0x02dd10a8) line 6950 redisplay_device(device * 0x0121970d, int 0x02dd10a8) line 7028 + 8 bytes redisplay() line 7156 + 532 bytes mswindows_wnd_proc(HWND__ * 0x37011937, unsigned int 0x00000000, unsigned int 0x24b61201, long 0x00000001) line 3811 007d0348() ---------------------------------------------------------------------------- /***************************************************************************** mswindows_output_display_block Given a display line, a block number for that start line, output all runes between start and end in the specified display block. Ripped off with minimal thought from the corresponding X routine. ****************************************************************************/ static void mswindows_output_display_block (struct window *w, struct display_line *dl, int block, int start, int end, int start_pixpos, int cursor_start, int cursor_width, int cursor_height) { struct frame *f = XFRAME (w->frame); Ichar_dynarr *buf; Lisp_Object window; struct display_block *db = Dynarr_atp (dl->display_blocks, block); rune_dynarr *rba = db->runes; struct rune *rb; int elt = start; face_index findex; int xpos, width; Lisp_Object charset = Qunbound; /* Qnil is a valid charset when MULE is not defined */ window = wrap_window (w); rb = Dynarr_atp (rba, start); if (!rb) /* Nothing to do so don't do anything. */ return; findex = rb->findex; xpos = rb->xpos; width = 0; if (rb->type == RUNE_CHAR) charset = ichar_charset (rb->object.chr.ch); if (end < 0) end = Dynarr_length (rba); buf = Dynarr_new (Ichar); while (elt < end) { rb = Dynarr_atp (rba, elt); if (rb->findex == findex && rb->type == RUNE_CHAR && rb->object.chr.ch != '\n' && rb->cursor_type != CURSOR_ON && EQ (charset, ichar_charset (rb->object.chr.ch))) { Dynarr_add (buf, rb->object.chr.ch); width += rb->width; elt++; } else { if (Dynarr_length (buf)) { mswindows_output_string (w, dl, buf, xpos, 0, start_pixpos, width, findex, 0, 0, 0, 0); xpos = rb->xpos; width = 0; } Dynarr_reset (buf); width = 0; if (rb->type == RUNE_CHAR) { findex = rb->findex; xpos = rb->xpos; charset = ichar_charset (rb->object.chr.ch); if (rb->cursor_type == CURSOR_ON) { if (rb->object.chr.ch == '\n') { mswindows_output_cursor (w, dl, xpos, cursor_width, findex, 0, 0); } else { Dynarr_add (buf, rb->object.chr.ch); mswindows_output_cursor (w, dl, xpos, cursor_width, findex, rb->object.chr.ch, 0); Dynarr_reset (buf); } xpos += rb->width; elt++; } else if (rb->object.chr.ch == '\n') { /* Clear in case a cursor was formerly here. */ redisplay_clear_region (window, findex, xpos, DISPLAY_LINE_YPOS (dl), rb->width, DISPLAY_LINE_HEIGHT (dl)); elt++; } } else if (rb->type == RUNE_BLANK || rb->type == RUNE_HLINE) { if (rb->type == RUNE_BLANK) mswindows_output_blank (w, dl, rb, start_pixpos); else { /* #### Our flagging of when we need to redraw the modeline shadows sucks. Since RUNE_HLINE is only used by the modeline at the moment it is a good bet that if it gets redrawn then we should also redraw the shadows. This won't be true forever. We borrow the shadow_thickness_changed flag for now. */ w->shadow_thickness_changed = 1; mswindows_output_hline (w, dl, rb); } if (rb->cursor_type == CURSOR_ON) mswindows_output_cursor (w, dl, xpos, cursor_width, rb->findex, 0, 0); elt++; if (elt < end) { rb = Dynarr_atp (rba, elt); findex = rb->findex; xpos = rb->xpos; } } else if (rb->type == RUNE_DGLYPH) { Lisp_Object instance; struct display_box dbox; struct display_glyph_area dga; redisplay_calculate_display_boxes (dl, rb->xpos, rb->object.dglyph.xoffset, rb->object.dglyph.yoffset, start_pixpos, rb->width, &dbox, &dga); window = wrap_window (w); instance = glyph_image_instance (rb->object.dglyph.glyph, window, ERROR_ME_DEBUG_WARN, 1); findex = rb->findex; if (IMAGE_INSTANCEP (instance)) { switch (XIMAGE_INSTANCE_TYPE (instance)) { case IMAGE_MONO_PIXMAP: case IMAGE_COLOR_PIXMAP: redisplay_output_pixmap (w, instance, &dbox, &dga, findex, cursor_start, cursor_width, cursor_height, 0); => if (rb->cursor_type == CURSOR_ON) ---------------------------------------------------------------------------- cursor_height 0x00000000 cursor_start 0x00000000 cursor_width 0x00000000 + &dbox 0x0082ec4c + &dga 0x0082ec5c findex 0x0000001a IMAGE_COLOR_PIXMAP 0x00000004 IMAGE_MONO_PIXMAP 0x00000003 instance 0x00000000 + w 0x011fea47 ============================================================================