Mail Archives: djgpp/1997/02/13/20:35:25
Eli Zaretskii <eliz AT is DOT elta DOT co DOT il> 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
- Raw text -