Re: 1.12.5 pserver core dump pid-11993
Mark <[email protected]>
| Newsgroups | gmane.comp.version-control.cvs.general,gmane.comp.version-control.cvs.bugs |
|---|---|
| Message-ID | <[email protected]> |
I have tested this. It is repeatable on solaris 2.8. I setup two workareas from the same repo/module and commited at the same time, one proceeded one got the waiting on lock. Once the one waiting on lock gets the lock, it core dumps. Please take a look at this. Our integration with another tool fails and the integration process is left in a uncertain state of reliability. cvs 1.12.5 non-root pserver, solaris 2.8, compiled with workshop 6.1, MMAP commented out in config.h Thanks, Mark --- Mark <[email protected]> wrote: > > I have 4 other core files that trace back to the same line of > code, 2 others can confirm happen during a commit that is > waiting > on a lock, to commit one file. No locks needed cleaning up...... > > Mark > > --- Mark <[email protected]> wrote: > > > > cvs 1.12.5 non-root pserver, solaris 2.8, workshop 6.1 > > > > We had a pserver core dump during a commit. The command and > core > > trace output is below. > > > > Thanks, > > > > Mark > > > > > ================================================================ > > > > > cvs commit -m "datarepolockhelp commit" CE-cqtool.lock > > cvs commit: [18:13:07] waiting for cvspserv's lock in > > /cvsroot/baseline/CarApp > > Terminated with fatal signal 11 > > Core dumped; preserving /cvstmp/pserver/cvs-serv11993 on > server. > > CVS locks may need cleaning up. > > > > > ============================================================================= > > > ============================================================================= > > Workshop Stack Trace: (line with arrow marked below) > > > ============================================================================= > > > ============================================================================= > > main(argc = 1, argv = 0xffbef360) > > server(argc = 1, argv = 0xffbef360) > > serve_ci(arg = 0x1bb3ca "") > > do_cvs_command(cmd_name = 0x1a6998 "commit", command = > > 0x56550 > > = &commit(int argc, char **argv)) > > commit(argc = 1, argv = 0x1b2cb0) > > lock_tree_promotably(argc = 1, argv = 0x1b2cb0, local = 0, > > which = 1, aflag = 0) > > Promotable_Lock(list = 0x1e2008) > > walklist(list = 0x1e2008, proc = 0x76de8 = > > &`cvs`lock.c`set_promotablelock_proc(Node *p, void *closure), > > closure = (nil)) > > set_promotablelock_proc(p = 0x1b2e80, closure = (nil)) > > promotable_lock(lock = 0x1b87a8) > > set_lock(lock = 0x1b87a8, will_wait = 0) > > (ARROW==>) lock_name(repository = (nil), name = 0x1740f8 > > "#cvs.lock") > > strlen(0x0, 0x0, 0x0, 0x7efefeff, 0x81010100, 0xff1c2ac4) > > > > > ============================================================================= > > > ============================================================================= > > Workshop dbx commands > > > ============================================================================= > > > ============================================================================= > > (dbx) debug cvs /tmp/core > > Reading cvs > > core file header read successfully > > Reading ld.so.1 > > Reading libxnet.so.1 > > Reading libnsl.so.1 > > Reading libc.so.1 > > Reading libdl.so.1 > > Reading libmp.so.2 > > Reading libc_psr.so.1 > > Reading libsocket.so.1 > > Reading nss_files.so.1 > > Reading nss_nisplus.so.1 > > Reading libdoor.so.1 > > program terminated by signal SEGV (no mapping at the fault > > address) > > Current function is lock_name > > (dbx) > > > > > > > ============================================================================= > > > ============================================================================= > > lock.c code section provided by workshop: (line with arrow > > marked > > below) > > > ============================================================================= > > > ============================================================================= > > static char * > > lock_name (const char *repository, const char *name) > > { > > char *retval; > > const char *p; > > char *q; > > const char *short_repos; > > mode_t save_umask = 0000; > > int saved_umask = 0; > > > > TRACE (TRACE_FLOW, "lock_name (%s, %s)", repository, > name); > > > > if (lock_dir == NULL) > > { > > /* This is the easy case. Because the lock files go > > directly > > in the repository, no need to create directories or > > anything. */ > > (ARROW==>) retval = xmalloc (strlen (repository) + > strlen > > (name) + 10); > > (void) sprintf (retval, "%s/%s", repository, name); > > } > > else > > { > > struct stat sb; > > mode_t new_mode = 0; > > > > /* The interesting part of the repository is the part > > relative > > to CVSROOT. */ > > assert (current_parsed_root != NULL); > > assert (current_parsed_root->directory != NULL); > > assert (strncmp (repository, > > current_parsed_root->directory, > > strlen > > (current_parsed_root->directory)) > > == 0); > > short_repos = repository + strlen > > (current_parsed_root->directory) + 1; > > > > if (strcmp (repository, > current_parsed_root->directory) > > == > > 0) > > short_repos = "."; > > > > > > > > __________________________________ > > Do you Yahoo!? > > Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes > > http://hotjobs.sweepstakes.yahoo.com/signingbonus > > > > > __________________________________ > Do you Yahoo!? > Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes > http://hotjobs.sweepstakes.yahoo.com/signingbonus __________________________________ Do you Yahoo!? Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes http://hotjobs.sweepstakes.yahoo.com/signingbonus