Mail Archives: cygwin-developers/2001/09/03/21:37:51
This is a multi-part message in MIME format.
--------------090307060705090108000703
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Christopher Faylor wrote:
> On Mon, Sep 03, 2001 at 01:22:41AM -0400, Charles Wilson wrote:
>
>>Charles Wilson wrote:
>>
>>
>>>cgf wrote:
>>>
>>>>I did a reconfigure and a 'make clean all' without error.
>>>>
>>>*while using a development kernel as your active cgywin1.dll* ? Or just
>>>the released 1.3.2 kernel?
>>>
>>
>>cgf wrote:
>>
>>
>>>I always use the latest CVS DLL for everything. Are you actually doing
>>>a "make install" while running cygwin? I can see how that could cause
>>>strange problems.
>>>
>>>
>>No, not really. 'make install prefix=$inst/usr exec_prefix=$inst/usr
>>bindir=$inst/usr/bin libdir=$inst/usr/lib sysconfdir=$inst/etc
>>includedir=$inst/usr/include tooldir=$inst/usr'
>>
>>But the oops happens during the make, ('make CFLAGS=-O2 tooldir=/usr')
>>not make install.
>>
>>Thanks for clarifying that you, at least, *are* able to bootstrap (build
>>a new cygwin while running a devel cygwin). It's probably just me.
>>
>
> I'd still like to see exactly where this is dying. You're saying "make"
> but that doesn't really mean much. Have you verified that you're dying
> in actual make code as opposed to cygwin1.dll code?
Okay, here's the error message:
make[2]: Leaving directory `/usr/src/cygwin/obj/i686-pc-cygwin/winsup/mingw'
0 [main] make 1016 open_stackdumpfile: Dumping stack trace to
make.exe.stackdump
Signal 11
make[1]: *** [bz2lib] Error 139
make[1]: Leaving directory `/usr/src/cygwin/obj/i686-pc-cygwin/winsup'
make: *** [all-target-winsup] Error 2
And the stackdump:
Exception: STATUS_ACCESS_VIOLATION at eip=00410732
eax=00000005 ebx=6141294C ecx=6109A350 edx=610950A0 esi=FFFFFFFF
edi=00000000
ebp=0022D404 esp=0022D3D4 program=D:\cygwin\bin\make.exe
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame Function Args
0022D404 00410732 (00000005, 0A01C9C8, 000000C8, 610950A0)
0022D424 61081E8A (00000005, 0A01C9C8, 000000C8, 0040A5A5)
0022D4D4 0040A5CB (0A01CB38, 0022D52C, 0040A7DD, 70203B2E)
0022D514 0040A9F9 (0A01CB38, 00000001, 0022D52C, 0042F0B4)
0022D584 0040ACE0 (0022D610, 0022D60C, 00000000, 00404A3D)
0022D624 00404B53 (00000000, 0A01C1F8, FFFFFFFF, 6102BC04)
0022D644 00404FFE (0A01C1F8, 0A01CB38, 0022D694, 61089BC3)
0022D684 004050D2 (0A01C1F8, 00000000, 0022D6D4, 6107FE5C)
0022D6B4 00405338 (0A01C1F8, 00000000, 00000006, 004264F1)
0022D724 00426617 (0022D7F4, 0A01C1F0, 00000002, 00000000)
0022D834 0041A09D (0A01BCB8, 0000000A, 00000010, 00000000)
0022D944 00419FD6 (0A01B200, 00000000, 00000058, 00000004)
0022D994 00418912 (00000000, 00000000, 0022FEB4, 00413D37)
0022FEB4 00413D6C (00000004, 61401DA4, 0A010008, 00000000)
0022FF10 61003E5A (00000000, 61407DD4, 00000004, 80DE2848)
0022FF40 6100403D (00412D40, 61407DD4, 81288140, 8046CB60)
End of stack trace (more stack frames may be present)
Decoded (complete version attached).
00410732 job.c:2317 (exec_command)
61081E8A winsup/cygwin/uinfo.cc:284 (cuserid)
0040A5CB function.c:1448 (func_shell)
0040A9F9 function.c:1703 (expand_builtin_function)
0040ACE0 function.c:1803 (handle_function)
00404B53 expand.c:253 (variable_expand_string)
00404FFE expand.c:415 (variable_expand)
004050D2 expand.c:457 (variable_expand_for_file)
00405338 expand.c:535 (allocated_variable_expand_for_file)
00426617 variable.c:888 (try_variable_definition)
0041A09D read.c:723 (read_makefile)
00419FD6 read.c:702 (read_makefile)
00418912 read.c:234 (read_all_makefiles)
00413D6C main.c:1503 (main)
61003E5A winsup/cygwin/dcrt0.cc:863 (dll_crt0_1)
6100403D winsup/cygwin/dcrt0.cc:929 (_dll_crt0)
Well, I don't think I can really figure out what the problem is unless I
know what program make is trying to execute in the exec_command()
function -- but that data doesn't show up in the stackdump. OTOH, I
can't just step through the entire build waiting for the crash -- it
does not appear deterministic.
Should I build dumper.exe and try the JIT functionality? would that help?
--Chuck
--------------090307060705090108000703
Content-Type: text/plain;
name="gdb.out"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="gdb.out"
(gdb) l *0x00410732
0x410732 is in exec_command (/usr/src/make/src/job.c:2317).
2312 perror_with_name ("execvp: ", shell);
2313 break;
2314 }
2315
2316 default:
2317 perror_with_name ("execvp: ", argv[0]);
2318 break;
2319 }
2320
2321 _exit (127);
(gdb) l *0x61081e8a
0x61081e8a is at /usr/src/cygwin/cygwin/winsup/cygwin/uinfo.cc:284.
279 cuserid (char *src)
280 {
281 if (src)
282 {
283 strcpy (src, getlogin ());
284 return src;
285 }
286 else
287 {
288 return getlogin ();
(gdb) l *0x0040a5cb
0x40a5cb is in func_shell (/usr/src/make/src/function.c:1448).
1443 maxlen += 512;
1444 buffer = (char *) xrealloc (buffer, maxlen + 1);
1445 }
1446
1447 errno = 0;
1448 cc = read (pipedes[0], &buffer[i], maxlen - i);
1449 if (cc > 0)
1450 i += cc;
1451 }
1452 while (cc > 0 || EINTR_SET);
(gdb) l *0x0040a9f9
0x40a9f9 is in expand_builtin_function (/usr/src/make/src/function.c:1703).
1698
1699 if (!entry_p->func_ptr)
1700 fatal (reading_file, _("Unimplemented on this platform: function `%s'"),
1701 entry_p->name);
1702
1703 return entry_p->func_ptr (o, argv, entry_p->name);
1704 }
1705
1706 /* Check for a function invocation in *STRINGP. *STRINGP points at the
1707 opening ( or { and is not null-terminated. If a function invocation
(gdb) l *0x0040ace0
0x40ace0 is in handle_function (/usr/src/make/src/function.c:1803).
1798 p = next + 1;
1799 }
1800 *argvp = NULL;
1801
1802 /* Finally! Run the function... */
1803 *op = expand_builtin_function (*op, nargs, argv, entry_p);
1804
1805 /* Free memory. */
1806 if (entry_p->expand_args)
1807 for (argvp=argv; *argvp != 0; ++argvp)
(gdb) l *0x00404b53
0x404b53 is in variable_expand_string (/usr/src/make/src/expand.c:235).
230 char *op, *begp;
231 char *end, *colon;
232
233 op = o;
234 begp = p;
235 if (handle_function (&op, &begp))
236 {
237 o = op;
238 p = begp;
239 break;
(gdb) l *0x404ffe
0x404ffe is in variable_expand (/usr/src/make/src/expand.c:415).
410
411 char *
412 variable_expand (line)
413 char *line;
414 {
415 return variable_expand_string(NULL, line, (long)-1);
416 }
417 ^L
418 /* Expand an argument for an expansion function.
419 The text starting at STR and ending at END is variable-expanded
(gdb) l *0x004050d2
0x4050d2 is in variable_expand_for_file (/usr/src/make/src/expand.c:457).
452 {
453 char *result;
454 struct variable_set_list *save;
455
456 if (file == 0)
457 return variable_expand (line);
458
459 save = current_variable_set_list;
460 current_variable_set_list = file->variables;
461 if (file->cmds && file->cmds->fileinfo.filenm)
(gdb) l *0x00405338
0x405338 is in allocated_variable_expand_for_file (/usr/src/make/src/expand.c:535).
530 char *obuf = variable_buffer;
531 unsigned int olen = variable_buffer_length;
532
533 variable_buffer = 0;
534
535 value = variable_expand_for_file (line, file);
536
537 #if 0
538 /* Waste a little memory and save time. */
539 value = xrealloc (value, strlen (value))
(gdb) l *0x00426617
0x426617 is in try_variable_definition (/usr/src/make/src/variable.c:888).
883 case f_simple:
884 /* A simple variable definition "var := value". Expand the value.
885 We have to allocate memory since otherwise it'll clobber the
886 variable buffer, and we may still need that if we're looking at a
887 target-specific variable. */
888 value = alloc_value = allocated_variable_expand (p);
889 break;
890 case f_conditional:
891 /* A conditional variable definition "var ?= value".
892 The value is set IFF the variable is not defined yet. */
(gdb) l *0x0041a09d
0x41a09d is in read_makefile (/usr/src/make/src/read.c:723).
718 /* Restore state. */
719 conditionals = save;
720 reading_file = &fileinfo;
721 }
722 #undef word1eq
723 else if (try_variable_definition (&fileinfo, p, o_file, 0))
724 /* This line has been dealt with. */
725 ;
726 else if (lb.buffer[0] == '\t')
727 {
(gdb) l *0x00419fd6
0x419fd6 is in read_makefile (/usr/src/make/src/read.c:702).
697 int r;
698
699 free ((char *)files);
700 files = next;
701
702 r = read_makefile (name, (RM_INCLUDED | RM_NO_TILDE
703 | (noerror ? RM_DONTCARE : 0)));
704 if (!r)
705 {
706 if (!noerror)
(gdb) l *0x00418912
0x418912 is in read_all_makefiles (/usr/src/make/src/read.c:234).
229 while (*p != 0 && !file_exists_p (*p))
230 ++p;
231
232 if (*p != 0)
233 {
234 if (! read_makefile (*p, 0))
235 perror_with_name ("", *p);
236 }
237 else
238 {
(gdb) l *0x00413d6c
0x413d6c is in main (/usr/src/make/src/main.c:1503).
1498
1499 /* Read all the makefiles. */
1500
1501 default_file = enter_file (".DEFAULT");
1502
1503 read_makefiles
1504 = read_all_makefiles (makefiles == 0 ? (char **) 0 : makefiles->list);
1505
1506 #ifdef WINDOWS32
1507 /* look one last time after reading all Makefiles */
(gdb) l *0x61003e5a
0x61003e5a is in dll_crt0_1(void) (/usr/src/cygwin/cygwin/winsup/cygwin/dcrt0.cc:863).
858 set_errno (0);
859
860 MALLOC_CHECK;
861 cygbench (__progname);
862 if (user_data->main)
863 exit (user_data->main (__argc, __argv, *user_data->envptr));
864 }
865
866 /* Wrap the real one, otherwise gdb gets confused about
867 two symbols with the same name, but different addresses.
(gdb) l *0x6100403d
0x6100403d is in _dll_crt0 (/usr/src/cygwin/cygwin/winsup/cygwin/dcrt0.cc:929).
924 if ((fork_info->type & PROC_MAGIC_MASK) == PROC_MAGIC_GENERIC)
925 api_fatal ("conflicting versions of cygwin1.dll detected. Use only the most recent version.\n");
926 break;
927 }
928 }
929 dll_crt0_1 ();
930 }
931
932 void
933 dll_crt0 (per_process *uptr)
--------------090307060705090108000703--
- Raw text -