From: frazer AT rtp DOT ericsson DOT se (Scott Frazer) Newsgroups: comp.os.msdos.djgpp Subject: Re: emacs 19.34 crashes immediately on win nt 4.0 Date: Thu, 13 Feb 1997 21:58:39 GMT Organization: Ericsson Data Services Americas Lines: 98 Message-ID: <3303886d.15652352@cnn.exu.ericsson.se> References: NNTP-Posting-Host: pc093.rtp.ericsson.se To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Eli Zaretskii wrote: >If you have time and motivation, please download the Emacs sources, >compile Emacs on your machine and try to debug this. At this point, I >would be happy if I only knew where exactly does Emacs crash. (The >traceback makes no sense, so it's probably either in the startup code or >in the DPMI host built into NT, in which case I need to know what is the >code in Emacs which causes the DPMI host to barf.) 'scuse me for jumping in here, but I am also running Windows NT v4.0 and can't get emacs to run, so I downloaded the sources and compiled it (after a little makefile massaging). Oh, and I am using all the latest official DJGPP releases, which I unzipped using pkunzip ... meaning I have LFN set to 'n' both in my DOS environment and in the 'djgpp.env' file. I tried emacs with both LFNs set to 'y' and it didn't work incidentally. I figured LFN=n was safer for this experiment. After fooling around with gdb for a while, I have the crash area down to this: C:\djgpp\GNU\EMACS\SRC>gdb emacs.exe GDB is free software and you are welcome to distribute copies of it under certain conditions; type "show copying" to see the conditions. There is absolutely no warranty for GDB; type "show warranty" for details. GDB 4.16 (go32), Copyright 1996 Free Software Foundation, Inc... Environment variable "DISPLAY" not defined. Breakpoint 1 at 0x72ec7: file msdos.c, line 3065. (gdb) break dosfns.c:init_dosfns Breakpoint 2 at 0x6f86f: file dosfns.c, line 257. (gdb) run Starting program: c:/djgpp/gnu/emacs/src/emacs.exe Breakpoint 2, init_dosfns () at dosfns.c:257 257 get_lim_data (); /* why the hell isn't this called elsewhere? */ (gdb) l 260, 285 260 regs.x.ax = 0x3000; 261 intdos (®s, ®s); 262 Vdos_version = Fcons (make_number (regs.h.al), make_number (regs.h.ah) ); 263 264 /* Obtain the country code by calling Dos via Dpmi. Don't rely on GO3 2. */ 265 info.size = (sizeof(dos_country_info) + 15) / 16; 266 if (_go32_dpmi_allocate_dos_memory (&info)) 267 dos_country_code = 1; 268 else 269 { 270 dpmiregs.x.ax = 0x3800; 271 dpmiregs.x.ds = info.rm_segment; 272 dpmiregs.x.dx = 0; 273 dpmiregs.x.ss = dpmiregs.x.sp = 0; 274 _go32_dpmi_simulate_int (0x21, &dpmiregs); 275 dos_country_code = dpmiregs.x.bx; 276 dosmemget (info.rm_segment * 16, DOS_COUNTRY_INFO, dos_country_inf o); 277 _go32_dpmi_free_dos_memory (&info); 278 } 279 dos_set_keyboard (dos_country_code, 0); 280 281 regs.x.ax = 0x6601; 282 intdos (®s, ®s); 283 if (regs.x.cflag) 284 /* Estimate code page from country code */ 285 switch (dos_country_code) (gdb) break 275 Breakpoint 3 at 0x6f8eb: file dosfns.c, line 275. (gdb) continue Continuing. Breakpoint 3, init_dosfns () at dosfns.c:275 275 dos_country_code = dpmiregs.x.bx; (gdb) step 276 dosmemget (info.rm_segment * 16, DOS_COUNTRY_INFO, dos_country_inf o); (gdb) step 277 _go32_dpmi_free_dos_memory (&info); (gdb) step Program received signal SIGSEGV, Segmentation fault. Fframe_or_buffer_changed_p () at dispnew.c:1942 1942 FOR_EACH_FRAME (tail, frame) (gdb) I tried 'next'ing into '_go32_dpmi_free_dos_memory', but it still SIGSEGVs. It may be because I don't have any debug information for the _go32 functions. Hope this will help, Scott Frazer frazer AT rtp DOT ericsson DOT se