Date: Tue, 13 Jul 2010 14:40:06 GMT From: Garrett Cooper <yanegomi@gmail.com> To: freebsd-sysinstall@FreeBSD.org Subject: Re: bin/148201: sysinstall(8): core dump (Error 10) while trying to install packages via sysinstall Message-ID: <201007131440.o6DEe6X3002393@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/148201; it has been noted by GNATS. From: Garrett Cooper <yanegomi@gmail.com> To: bug-followup@FreeBSD.org, leon.gehling@googlemail.com Cc: Subject: Re: bin/148201: sysinstall(8): core dump (Error 10) while trying to install packages via sysinstall Date: Tue, 13 Jul 2010 07:35:34 -0700 Some other details, like install media settings and the package installed would be helpful. As far as the technical issues are concerned, it might be because fp isn't initialized to NULL in package_extract: int package_extract(Device *dev, char *name, Boolean depended) { char path[MAXPATHLEN]; const char *PkgExts[] = { "", ".tbz", ".tbz2", ".tgz" }; int last_msg, pathend, ret; size_t ext; FILE *fp; There's a codepath where if it fails to setup the `device' via DEVICE_GET, it'll be uninitialized with a bogus value: /* We have a path, call the device strategy routine to get the file */ for (ext = 0 ; ext < sizeof PkgExts / sizeof PkgExts[0]; ++ext) { strlcpy(path + pathend, PkgExts[ext], sizeof path - pathend); if ((fp = DEVICE_GET(dev, path, TRUE))) break; } if (fp) { There are some other QA issues in this function as well... - fork can fail: pid = fork(); - dup2 can fail: dup2(pfd[0], 0); close(pfd[0]); dup2(DebugFD, 1); dup2(1, 2); close(pfd[1]); - pipe can fail: pipe(pfd); - WEXITSTATUS is only valid if WIFEXITED is true: if (sigpipe_caught || i < 0 || WEXITSTATUS(tot)) { - signal can fail: signal(SIGPIPE, catch_pipe); - This can spin the CPU (doesn't matter so much on install media, but it does matter for multiuser): /* Now catch any stragglers */ while (wait3(&tot, WNOHANG, NULL) > 0); Thanks, -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007131440.o6DEe6X3002393>