Eli Zaretskii wrote: > The file etc/DEBUG gives some hints on how to debug crashes inside GC, > search for "Debugging problems which happen in GC". Near the end of > nt/INSTALL, you will find some advice on how to use Visual Studio to > debug an MSVC build. I hope those two will give you enough > information to at least begin the debugging. > > The first task is to find out which Lisp data structure gets > corrupted. Can you do that? Ok, I'll try: (I deleted emacs-devel@gnu.org from CC: because that message contain large specific dump/debug trace) stack trace: 00> emacs.exe!gc_sweep() alloc.c Line 6130 while (vector) if (!VECTOR_MARKED_P (vector)) // 01009643 mov ecx,dword ptr [eax] <- access vio // "vector" is in EAX = 0x61c42E60 // 21 steps(->next) from all_vectors: 0x01532800 4000804d 61c42e60 212fc400 212fc400 M€.@`.Äa.Ä/!.Ä/! 0x01532810 21351800 212fc400 212fc400 212fc400 ..5!.Ä/!.Ä/!.Ä/! 0x01532820 212fc400 212fc400 212fc400 212fc400 .Ä/!.Ä/!.Ä/!.Ä/! 0x01532830 212fc400 212fc400 212fc400 212fc400 .Ä/!.Ä/!.Ä/!.Ä/! .... 01> emacs.exe!Fgarbage_collect() alloc.c Line 5181 unmark_byte_stack (); // here prev = 0x212fc400 - which fills mem block above 02> emacs.exe!Ffuncall(int nargs=0x00000001, int * args=0x0082f934) eval.c Line 2968 Fgarbage_collect (); debug_print((original_fun)) 8583476 03> emacs.exe!Fbyte_code(int bytestr=0x011d5ad4, int vector=0x811d5acc, int maxdepth=0x00000004) bytecode.c Line 681 TOP = Ffuncall (op + 1, &TOP); AFTER_POTENTIAL_GC (); 04> emacs.exe!funcall_lambda(int fun=0x811d5a90, int nargs=0x00000001, int * arg_vector=0x0082fa00) eval.c Line 3221 + 0xe val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), AREF (fun, COMPILED_CONSTANTS), AREF (fun, COMPILED_STACK_DEPTH)); debug_print((fun)) #[(&optional parameters) "Д!ЕћЖЗB!ИЙЋК !€Л \"€М !€Н !€О !€ „2П !€‚8Р C\"€С) +‡" [parameters success frame visibility-spec x-handle-named-frame-geometry visibility x-create-frame (visibility) nil ((byte-code "„В !€В‡" [success frame delete-frame] 2)) x-setup-function-keys x-handle-reverse-video frame-set-background-mode face-set-after-frame-default tool-bar-setup make-frame-visible modify-frame-parameters t] 4 707761] 05>emacs.exe!Ffuncall(int nargs=0x00000001, int * args=0x21b9c3c0) eval.c Line 3078 + 0xc if (COMPILEDP (fun)) val = funcall_lambda (fun, numargs, args + 1); debug_print((original_fun)) x-create-frame-with-faces 06>emacs.exe!Fbyte_code(int bytestr=0x01214f40, int vector=0x81214f38, int maxdepth=0x00000006) Line bytecode.c 681 TOP = Ffuncall (op + 1, &TOP); AFTER_POTENTIAL_GC (); break; 07>emacs.exe!funcall_lambda(int fun=0x81214ef8, int nargs=0x00000001, int * arg_vector=0x0082fad0) eval.c Line 3221 + 0xe val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), AREF (fun, COMPILED_CONSTANTS), AREF (fun, COMPILED_STACK_DEPTH)); debug_print((fun)) #[(&optional parameters) "Жћѓ,ЗЖћA!‰И=ѓЙ‚( Й=ѓ'КЛЖћA\"‚( )‚:Вћѓ9ВћA‚: ‰ ћAМ Й „PКН \"€ОП!€ Р ћA\"!С!€Й‰ѓљ@‰ћ„‘Т\"‰ѓђУ#€)A‰„p*ФХ\"€,‡" [parameters type window-system w frame-creation-function-alist frame-creation-function terminal terminal-live-p t nil error "Terminal %s does not exist" selected-frame "Don't know how to create a frame on window system %s" run-hooks before-make-frame-hook append normal-erase-is-backspace-setup-frame frame-parameter set-frame-parameter run-hook-with-args after-make-frame-functions oldframe frame window-system-default-frame-alist frame-inherited-parameters param --cl-dolist-temp-- val] 6 824951 nil] 08>emacs.exe!Ffuncall(int nargs=0x00000001, int * args=0x21c56360) eval.c Line 3078 + 0xc if (COMPILEDP (fun)) val = funcall_lambda (fun, numargs, args + 1); debug_print((original_fun)) make-frame 09>emacs.exe!Fbyte_code(int bytestr=0x012143e0, int vector=0x812143d8, int maxdepth=0x00000006) Line 681 TOP = Ffuncall (op + 1, &TOP); AFTER_POTENTIAL_GC (); break; 10>emacs.exe!funcall_lambda(int fun=0x812143ac, int nargs=0x00000000, int * arg_vector=0x0082fba0) Line 3221 + 0xe val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), AREF (fun, COMPILED_CONSTANTS), AREF (fun, COMPILED_STACK_DEPTH)); debug_print((fun)) #[nil "…T ?…TЖ=?…TЗИ Й \"„CК Л#Мћ„.НBОBBП!‰Р !СТУ Т\"#€Ф !€Л‰‡" [initial-window-system noninteractive special-display-function terminal-frame initial-frame-alist default-frame-alist pc special-display-popup-frame delq minibuffer-frame-list append nil horizontal-scroll-bars (horizontal-scroll-bars . t) window-system make-frame frame-remove-geometry-params set-frame-parameter environment frame-parameter delete-frame frame-initial-frame-alist frame-initial-frame default-minibuffer-frame] 6 822783] 11> emacs.exe!Ffuncall(int nargs=0x00000000, int * args=0x21bbfb48) Line 3078 + 0xc if (COMPILEDP (fun)) val = funcall_lambda (fun, numargs, args + 1); debug_print((original_fun)) frame-initialize 12> emacs.exe!Fbyte_code(int bytestr=0x011dc478, int vector=0x811dc470, int maxdepth=0x00000007) Line 681 C TOP = Ffuncall (op + 1, &TOP); AFTER_POTENTIAL_GC (); break; 13>emacs.exe!funcall_lambda(int fun=0x811dc448, int nargs=0x00000000, int * arg_vector=0x0082fc74) Line 3221 + 0xe C val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), AREF (fun, COMPILED_CONSTANTS), AREF (fun, COMPILED_STACK_DEPTH)); that's a huge one: debug_print((fun)) #[nil "Ж  ЗИ!€ЗЙ!€ЗК!€ЛМ!‰Н=„9 Оќѓ&П‚9 Рќѓ1Н‚9 Сќѓ9Т) У>ѓIФ@ХA‚[ Ц=ѓUЧB‚[ЧBХAШЩЪЏ€ЫН!€ЬЭCЮ #НD‰E„ЂЯаб\"€вб!€‚ЏгдE!!DежF\"F*GAHHѓ±HзH@IП# €H‰AH@€‚•)НGAHJK?…Ви ‰LѓУLй љѓУкLJ„HѓлMH‰AH@‰NOНPмнN\"ѓNо•НOPпрN\"NNсљ„QтNM\"‰QП=ѓ%NрНON‚PQ;ѓIуQM\"‰R„=ШфN\"€R@рНON)‚PНPON)NхќѓdН‰LSПT‚хNцќѓzП‰UVчWBW‚хNшќѓ‡НL‚хNщќѓўP†љH‰AH@LНP‚хNъљѓЇНS‚хNыљѓјПX‚хNьљѓМэWBW‚хNюќѓЬяYBY‚хNЃ„ќѓлПU‚хNHBHПJPѓШЃ…N\"€,‚УGѓGHЎ€*Ѓ†Ѓ‡!€Ѓ€Ѓ‰!ѓ)Ѓ‰ €K„PV„PZЃЉ>ѓMЃ‹ЃЊЃЌ\"ЃЋќѓPПUK„vV„v[ЃЏ>ѓpЃђНЃ‘\"оX„vЃ’р!€K„љV„љЃ“ ѓљЃђНЃ\\\"оX„љЃ”р!€ЗЃ•!€ЗЃ–!€ЗЃ—!€ЗЃ˜!€ЗЃ™!€ЗЃљ!€ЗЃ›!€ЗЃњ!€ЗЃќ!€ЗЃm!€Ѓћ €Ѓџ €Ѓ€Ѓ !ѓЃ\\Wћ†щЃ\\Yћ‰\\… \\A… \\Aо=?])^_`abcSѓ(ЃЎSП‰#€НdLѓ„мЃўL\"ѓQЃЈЃ¤ЃҐЃ¦L\"Ѓ§#€‚„ЃЁЃ© ЃЄ=ѓeЃ«‚kЃ«LP!!„„ЃЈЃ¤ЃҐЃ¬L\"Ѓ§#€Н‰XП=ѓ“Ѓ­‚•XefghigЃ®jkXѓґj €‚ЅШЃЇЃ°Џ€lѓ mѓ rЃ± q€mѓ mЃІ=„мmўЃі=ѓтmA„тНm‚ mўЃі=ѓmAmНnЃ†Ѓґ!€)K„+Ѓµo!ѓ+Ѓ¶o!ѓ+Ѓ·o!€Нpkg=„=Пhki*hѓGike„gfe=„gЃёЃ№Ѓє \"€Ѓ»q!€,rкљѓ€ЛЃј!††и ЃЅs†…Ѓѕ QrЃїЃt!ѓѓ)ЗИA@ЙКAAЛ##‚6ЗИ@МNЙНAЛ##О\"€ПО!€РС ‡" [error initial-window-system princ apply concat file-error error-conditions format "%s: %s" mapconcat #[(obj) "БВ\"‡" [obj prin1-to-string t] 3] ", " error-message #[(obj) "БВ\"‡" [obj prin1-to-string t] 3] external-debugging-output terpri nil kill-emacs] 8))) set-locale-environment locate-file "simple" get-load-suffixes princ "Warning: Could not find simple.el nor simple.elc" external-debugging-output terpri file-truename file-name-directory mapcar #[(elt) "@;ѓВ@!„ @PAB‡‡" [elt lisp-dir file-name-absolute-p] 2] decode-coding-string user-login-name user-real-login-name "" (("--no-init-file") ("--no-site-file") ("--debug-init") ("--user") ("--iconic") ("--icon-type") ("--quick") ("--no-blinking-cursor") ("--basic-display")) string-match "^\\(--[^=]*\\)=" 0 match-string 1 "--" try-completion assoc "Option `%s' is ambiguous" ("-Q" "-quick") ("-D" "-basic-display") (vertical-scroll-bars) ("-q" "-no-init-file") ("-u" "-user") "-no-site-file" "-debug-init" "-iconic" (visibility . icon) ("-icon-type" "-i" "-itype") (icon-type . t) eol-mnemonic-unix eol-mnemonic-mac eol-mnemonic-dos load-path lisp-dir simple-file-name load-history command-line-args args locale-coding-system done noninteractive init-file-user longopts argi orig-argi argval completion elt site-run-file emacs-quick-startup no-blinking-cursor emacs-basic-display initial-frame-alist init-file-debug default-frame-alist window-system initial-window-system tool-bar-lines tool-bar-originally-present scalable-fonts-allowed font-list-limit face-ignored-fonts old-face-ignored-fonts old-font-list-limit old-scalable-fonts-allowed inhibit-startup-screen default-enable-multibyte-characters orig-enable-multibyte debug-on-error-initial debug-on-error-should-be-set debug-on-error-from-init-file inner debug-on-error deactivate-mark transient-mark-mode mark-active abbrev-file-name abbrevs-changed current-language-environment user-mail-address mail-host-address font-lock-face-attributes face-attributes face-attribute face face-spec underline-p italic-p bold-p background foreground after-init-time --cl-dolist-temp-- major-mode initial-major-mode memory-signal-data x-session-previous-id ("-nbc" "-no-blinking-cursor") "Option `%s' doesn't allow an argument" run-hooks before-init-hook fboundp frame-initialize (x w32 mac) x-get-resource "cursorBlink" "CursorBlink" ("off" "false") (x w32) frame-parameter menu-bar-lines menu-bar-mode display-graphic-p tool-bar-mode blink-cursor-mode tooltip-mode global-font-lock-mode mouse-wheel-down-event mouse-wheel-up-event file-name-shadow-mode send-mail-function focus-follows-mouse global-auto-composition-mode normal-erase-is-backspace-setup-frame tty-register-default-colors frame-notice-user-settings load "[~/: ]" display-warning initialization format "Invalid user name %s" :error file-directory-p expand-file-name windows-nt "~" "User %s has no home directory" startup #[nil "…ѕ Ж=ѓЗИQ‚A Й=ѓ3КЗЛМ#ѓ#Н‚AКЗЛО#ѓ/П‚AН‚A Р=ѓ=С‚AЗТQУФ У‰#€ У=ѓiХЦЧЗШQ!\"Ф У‰#€ У=ѓh ) ѓ®Щ !Ъљѓ®Ы !‰ЬP$Э$!ѓЉ$‚•Э !ѓ” ‚•Л‰ѓ­Ю \"ѓ«Яа #€бв!€ *%?…ЅЛ&ФгУ‰#))‡" [init-file-user system-type user-init-file-1 user-init-file otherfile source ms-dos "~" "/_emacs" windows-nt directory-files nil "^\\.emacs\\(\\.elc?\\)?$" "~/.emacs" "^_emacs\\(\\.elc?\\)?$" "~/_emacs" vax-vms "sys$login:.emacs" "/.emacs" t load expand-file-name "init" file-name-as-directory "/.emacs.d" file-name-extension "elc" file-name-sans-extension ".el" file-exists-p file-newer-than-file-p message "Warning: %s is newer than %s" sit-for 1 "default" alt inhibit-default-init inhibit-startup-screen] 7] (byte-code " €В‰‡" [inner init-file-had-error nil] 2) ((error (byte-code "ЕЉЖЗ!q€ИЙК \"ЙЛ @МN AѓН‚ОПР AС#$ИТУФ±€)ХЦ @МN Aѓ;Н‚ 14>emacs.exe!Ffuncall(int nargs=0x00000000, int * args=0x21bbf830) Line 3078 + 0xc if (COMPILEDP (fun)) val = funcall_lambda (fun, numargs, args + 1); debug_print((original_fun)) command-line 15> emacs.exe!Fbyte_code(int bytestr=0x011db7c8, int vector=0x811db7c0, int maxdepth=0x00000006) Line 681 TOP = Ffuncall (op + 1, &TOP); AFTER_POTENTIAL_GC (); break; 16> emacs.exe!funcall_lambda(int fun=0x811db798, int nargs=0x00000000, int * arg_vector=0x0082fcfc) Line 3221 + 0xe val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), AREF (fun, COMPILED_CONSTANTS), AREF (fun, COMPILED_STACK_DEPTH)); debug_print((fun)) #[nil "ѓЖЗ!‡И rЙq€ *КЛМНЛ!C#€О Пљѓ%И Р‰ѓO @‰СТУ!И‰‰$€) СТФ!И‰‰$€) A‰„-*(Х=„ЦЧ!‰);ѓ~ШЩ)!ЪP!ШЩ !ЪP!љ„~ЫЬ)P*\"*)Э !Р+ЮЋЯ €*абв\"€гРд\"‰$;ѓҐе$P$‚Л,Р-‰.ѓК.@-жз-\"ѓБ-$.A‰.„°*$…ЦЫ$*\")‡" [command-line-processed default-directory dir backup-by-copying-when-mismatch load-path tail message "Back to top level." t "*Messages*" put user-full-name standard-value default-value user-uid 0 nil load expand-file-name "subdirs.el" "leim-list.el" vax-vms getenv "PWD" file-attributes file-name-as-directory "." delete "PWD=" abbreviate-file-name ((byte-code "Ж! „. ѓ. З=ѓ#ИЙ !К\"€ЛМ !!НP‚-МОП Р С $! „>ТУ!€ ѓ>ТЕ!€„TѓT„TФ=ѓhХЦ!ѓ]Ц €ХЧ!ѓhЧШ !€ХЩ!ѓqЩ €ѓzТЪ!€ „‡Ы ѓ‡Ь €Ж‡" [default-directory auto-save-list-file-name auto-save-list-file-prefix system-type inhibit-startup-hooks term-setup-hook abbreviate-file-name ms-dos make-directory file-name-directory t make-temp-name expand-file-name "~" format "%s%d-%s~" emacs-pid system-name run-hooks emacs-startup-hook pc fboundp frame-notice-user-settings frame-set-background-mode selected-frame font-menu-add-default window-setup-hook display-popup-menus-p precompute-menubar-bindings frame-initial-frame initial-window-system noninteractive menubar-bindings-done] 6)) command-line setenv "TERM" "dumb" frame-parameter display "DISPLAY=" string-match "\\`DISPLAY=" system-type pwd process-environment menubar-bindings-done initial-environment varval --cl-dolist-temp--] 6] 17> emacs.exe!apply_lambda(int fun=0x811db798, int args=0x212fc400, int eval_flag=0x00000001) Line 3146 backtrace_list->evalargs = 0; tem = funcall_lambda (fun, XINT (numargs), arg_vector); /* Do the debug-on-exit now, while arg_vector still exists. */ if (backtrace_list->debug_on_exit) tem = call_debugger (Fcons (Qexit, Fcons (tem, Qnil))); debug_print((fun)) #[nil "ѓЖЗ!‡И rЙq€ *КЛМНЛ!C#€О Пљѓ%И Р‰ѓO @‰СТУ!И‰‰$€) СТФ!И‰‰$€) A‰„-*(Х=„ЦЧ!‰);ѓ~ШЩ)!ЪP!ШЩ !ЪP!љ„~ЫЬ)P*\"*)Э !Р+ЮЋЯ €*абв\"€гРд\"‰$;ѓҐе$P$‚Л,Р-‰.ѓК.@-жз-\"ѓБ-$.A‰.„°*$…ЦЫ$*\")‡" [command-line-processed default-directory dir backup-by-copying-when-mismatch load-path tail message "Back to top level." t "*Messages*" put user-full-name standard-value default-value user-uid 0 nil load expand-file-name "subdirs.el" "leim-list.el" vax-vms getenv "PWD" file-attributes file-name-as-directory "." delete "PWD=" abbreviate-file-name ((byte-code "Ж! „. ѓ. З=ѓ#ИЙ !К\"€ЛМ !!НP‚-МОП Р С $! „>ТУ!€ ѓ>ТЕ!€„TѓT„TФ=ѓhХЦ!ѓ]Ц €ХЧ!ѓhЧШ !€ХЩ!ѓqЩ €ѓzТЪ!€ „‡Ы ѓ‡Ь €Ж‡" [default-directory auto-save-list-file-name auto-save-list-file-prefix system-type inhibit-startup-hooks term-setup-hook abbreviate-file-name ms-dos make-directory file-name-directory t make-temp-name expand-file-name "~" format "%s%d-%s~" emacs-pid system-name run-hooks emacs-startup-hook pc fboundp frame-notice-user-settings frame-set-background-mode selected-frame font-menu-add-default window-setup-hook display-popup-menus-p precompute-menubar-bindings frame-initial-frame initial-window-system noninteractive menubar-bindings-done] 6)) command-line setenv "TERM" "dumb" frame-parameter display "DISPLAY=" string-match "\\`DISPLAY=" system-type pwd process-environment menubar-bindings-done initial-environment varval --cl-dolist-temp--] 6] 18>emacs.exe!Feval(int form=0xa138a6c0) eval.c Line 2405 + 0xb if (COMPILEDP (fun)) val = apply_lambda (fun, original_args, 1); debug_print((original_fun)) normal-top-level 19> emacs.exe!top_level_2() Line 1378 + 0xb C Thanks! -- Andrey _________________________________________________________________ In a rush? Get real-time answers with Windows Live Messenger. http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_Refresh_realtime_042008