Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Message-ID: <3B943067.5000207@ece.gatech.edu> Date: Mon, 03 Sep 2001 21:37:43 -0400 From: Charles Wilson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.2) Gecko/20010713 X-Accept-Language: en-us MIME-Version: 1.0 To: cygwin-developers AT cygwin DOT com Subject: Re: cygwin 1.3.3 announcment -- extra words solicited References: <999380998 DOT 30841 DOT ezmlm AT sources DOT redhat DOT com> <3B92D324 DOT 9030308 AT ece DOT gatech DOT edu> <3B92EC8F DOT 3070605 AT ece DOT gatech DOT edu> <20010902224411 DOT A21914 AT redhat DOT com> <3B92F0CF DOT 4040101 AT ece DOT gatech DOT edu> <3B9313A1 DOT 4010200 AT ece DOT gatech DOT edu> <20010903013236 DOT A22505 AT redhat DOT com> Content-Type: multipart/mixed; boundary="------------090307060705090108000703" 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--