Date: Wed, 25 Feb 2015 13:58:53 -0800 From: Kevin Oberman <rkoberman@gmail.com> To: Miguel Clara <miguelmclara@gmail.com> Cc: freebsd-current <freebsd-current@freebsd.org>, Garrett Cooper <yaneurabeya@gmail.com> Subject: Re: Shared object "libsodium.so.13" not found, required by "dnscrypt-proxy" Message-ID: <CAN6yY1tpyinY1yueHY8Tr=igQbkTpwJBdz9-aUwQ5xdMqiVf-A@mail.gmail.com> In-Reply-To: <CADGo8CUeexNbOW8VbjNQ8-UGrsVny5JO4Ckv89XNg9v-aEetSA@mail.gmail.com> References: <CADGo8CURnvyLD55zs5m=hgrG9g6xct0q4ZMSNiY%2BzLA1GBi0Ug@mail.gmail.com> <CAGHfRMC1_jRQxkxu-aaJJBvqb8oPvOrCiJwOWhLsR1A81YKrEw@mail.gmail.com> <CADGo8CWyyFJXR5fD%2BYe%2BSynzH0mqfh3Fsx8ULmQzOxTwR0Bd8A@mail.gmail.com> <FF6DD5BB-7D15-4224-8EF5-DA1C89908B1B@gmail.com> <B506CD41-42F8-4DAF-B2D3-B09C70A2A28D@gmail.com> <64AF7708-217B-4AC0-A47A-AD1B0BFF7EDC@gmail.com> <CADGo8CUCCjrW-3p9F4aiwRh1fbid%2BfNjikag55%2BNheJYBUt-Rg@mail.gmail.com> <885DA4D0-9644-4F06-97C9-04EAD7B4958C@gmail.com> <CADGo8CVjVig6HT6o2MYMzXizFLG62WMEFTe278nq8qoOg3-akQ@mail.gmail.com> <CAN6yY1tKDi4da25KbpATRnOE7YZOgVyw78rBrH4wofF3iqQLXQ@mail.gmail.com> <CADGo8CV4=4V31ibc9S43e3bBC1g3YL-m-NLc2Bccz_Pk4fQ49Q@mail.gmail.com> <CADGo8CV4ziyTxJJstLm9VWFueLGVjkZ=Kt6hhV1owymSMf7=yg@mail.gmail.com> <CADGo8CUeexNbOW8VbjNQ8-UGrsVny5JO4Ckv89XNg9v-aEetSA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Feb 24, 2015 at 6:05 PM, Miguel Clara <miguelmclara@gmail.com> wrote: > > > On Wed, Feb 25, 2015 at 1:58 AM, Miguel Clara <miguelmclara@gmail.com> > wrote: > >> >> On Wed, Feb 25, 2015 at 12:26 AM, Miguel Clara <miguelmclara@gmail.com> >> wrote: >> >>> >>> On Tue, Feb 24, 2015 at 11:11 PM, Kevin Oberman <rkoberman@gmail.com> >>> wrote: >>> >>>> On Tue, Feb 24, 2015 at 10:53 AM, Miguel Clara <miguelmclara@gmail.com= > >>>> wrote: >>>> >>>>> On Tue, Feb 24, 2015 at 6:13 PM, Garrett Cooper <yaneurabeya@gmail.co= m >>>>> > >>>>> wrote: >>>>> >>>>> > On Feb 24, 2015, at 6:35, Miguel Clara <miguelmclara@gmail.com> >>>>> wrote: >>>>> > >>>>> > > ]# rcorder /etc/rc.d/* /usr/local/etc/rc.d/* >/dev/null >>>>> > > rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown >>>>> provision >>>>> > `kerberos' >>>>> > > rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown >>>>> provision >>>>> > `named' >>>>> > > rcorder: file `/usr/local/etc/rc.d/dnscrypt-proxy' is before >>>>> unknown >>>>> > provision `unbound' >>>>> > > rcorder: Circular dependency on file `/usr/local/etc/rc.d/webcamd= '. >>>>> > > rcorder: Circular dependency on provision `dbus' in file >>>>> > `/usr/local/etc/rc.d/webcamd'. >>>>> > > rcorder: Circular dependency on provision `ldconfig' in file >>>>> > `/usr/local/etc/rc.d/dnscrypt-proxy'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/devfs'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/mdconfig2'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/newsyslog'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/syslogd'. >>>>> > > rcorder: Circular dependency on provision `NETWORKING' in file >>>>> > `/etc/rc.d/kdc'. >>>>> > > rcorder: Circular dependency on provision `ldconfig' in file >>>>> > `/etc/rc.d/SERVERS'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/archdep'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/SERVERS'. >>>>> > > rcorder: requirement `tpmd' in file `/usr/local/etc/rc.d/tcsd' ha= s >>>>> no >>>>> > providers. >>>>> > > rcorder: Circular dependency on file `/usr/local/etc/rc.d/uuidd'. >>>>> > > rcorder: requirement `usbd' in file `/usr/local/etc/rc.d/hald' ha= s >>>>> no >>>>> > providers. >>>>> > > >>>>> > > # rcorder /etc/rc.d/* /usr/local/etc/rc.d/* | awk >>>>> > =E2=80=98/SERVERS|cleanvar|ldconfig|dbus/ { print NR, $0 }=E2=80=99 >>>>> > > rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown >>>>> provision >>>>> > `kerberos' >>>>> > > rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown >>>>> provision >>>>> > `named' >>>>> > > rcorder: file `/usr/local/etc/rc.d/dnscrypt-proxy' is before >>>>> unknown >>>>> > provision `unbound' >>>>> > > rcorder: Circular dependency on file `/usr/local/etc/rc.d/webcamd= '. >>>>> > > rcorder: Circular dependency on provision `dbus' in file >>>>> > `/usr/local/etc/rc.d/webcamd'. >>>>> > > rcorder: Circular dependency on provision `ldconfig' in file >>>>> > `/usr/local/etc/rc.d/dnscrypt-proxy'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/devfs'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/mdconfig2'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/newsyslog'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/syslogd'. >>>>> > > rcorder: Circular dependency on provision `NETWORKING' in file >>>>> > `/etc/rc.d/kdc'. >>>>> > > rcorder: Circular dependency on provision `ldconfig' in file >>>>> > `/etc/rc.d/SERVERS'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/archdep'. >>>>> > > rcorder: Circular dependency on provision `mountcritremote' in fi= le >>>>> > `/etc/rc.d/SERVERS'. >>>>> > > rcorder: requirement `tpmd' in file `/usr/local/etc/rc.d/tcsd' ha= s >>>>> no >>>>> > providers. >>>>> > > rcorder: Circular dependency on file `/usr/local/etc/rc.d/uuidd'. >>>>> > > rcorder: requirement `usbd' in file `/usr/local/etc/rc.d/hald' ha= s >>>>> no >>>>> > providers. >>>>> > > cleanvar: Command not found. >>>>> > > dbus/: Command not found. >>>>> > > >>>>> > > Note that this is still with the change to dnscrypt-ptoxy REQUIRE >>>>> > (adding ldconfig) >>>>> > >>>>> > Your rcorder is 50 shades of broken :(. Please remove all local >>>>> > modifications to scripts, then repost the output of the rcorder >>>>> commands >>>>> > again. I suspect what=E2=80=99s going wrong is the result of some o= f my >>>>> changes to >>>>> > remove etc/rc.d based on build knobs=E2=80=A6 >>>>> > Cheers, >>>>> > >>>>> >>>>> So much like the movies them... damn.... :X >>>>> >>>>> I don't recall any changes to the rc.d scripts except the one to >>>>> dnscrypt-proxy (adding the ldconfig REQUIRE) >>>>> >>>>> I also don't really know what to make of the output... expect this >>>>> part: >>>>> >>>>> "Circular dependency on provision", but the man says: >>>>> A set of files has a circular dependency which was detected while >>>>> processing the stated condition. >>>>> >>>>> So it should mean that 'A' requires 'B' but 'B' requires 'A'... but >>>>> this >>>>> does not seem to be the case... >>>>> >>>>> I guess I'll have to go one by one and see if I can identify issue. B= ut >>>>> first I'll make sure the ports that use those rc.d scripts are up to >>>>> date. >>>>> >>>> >>>> Just to save a bit of time, many RC scripts are messed up at install >>>> time. >>>> >>>> One of the worst I have is for security/trousers-tddl. It is a mess. I= t >>>> wants kerberos and named, but most FreeBSD systems no longer run named= or >>>> kerberos. As far as I can tell, no FreeBSD port provides a tpmd, so I = have >>>> no idea where the heck that comes from. >>>> >>>> hald wants usbd which has been obsolete for some years. Certainly no >>>> providers any longer. I don't think that any supported version of Free= BSD >>>> still has usbd, so any port requiring it should be fixed. >>>> >>>> Also, webcamd and dbus have a circular dependency. It really needs to >>>> be fixed some time, but does not break anything. >>>> >>>> I suspect that whatever is causing the multiple circular dependencies >>>> on mountcritremote might be tied to the issue. I don't see the obvious >>>> problem here and I don't have it. Circular dependencies are a real pai= n to >>>> track down as they are often not direct. A required E and G and B requ= ires >>>> A. But the rcorder only knows that. It does not report that E does req= uire >>>> B and just reports that A is a circular dependency. (I hope that makes= some >>>> sense.) >>>> >>>> Normally mountcritremote should be very soon after NETWORKING...usuall= y >>>> after NETWORKING and netwait. This means it should run right after the >>>> network starts and before anything that depends on the network. >>>> rcorder /etc/rc.d/* /usr/local/etc/rc.d/* | less should show this with >>>> ldconfig right after mountcritremote. There is no reason that devfs, >>>> syslogd or any of the others listed should precede mountcritremote! Th= e >>>> errors indicate that SOMETHING before NETWORKING and netwait is causin= g all >>>> of these other things to run and, BOOM, your script is firing off befo= re >>>> ldconfig is run. >>>> >>>> Good luck! It will likely be tedious, but looking at the output of >>>> rcorder should point the finger in at least the right direction. Hete = is an >>>> exerpt from mine in the area where these things belong: >>>> /etc/rc.d/NETWORKING >>>> /etc/rc.d/netwait >>>> /etc/rc.d/mountcritremote >>>> /etc/rc.d/ldconfig >>>> /etc/rc.d/accounting >>>> /etc/rc.d/newsyslog >>>> /etc/rc.d/syslogd >>>> /etc/rc.d/ntpdate >>>> /etc/rc.d/rpcbind >>>> /etc/rc.d/nfsclient >>>> /etc/rc.d/devfs >>>> /etc/rc.d/ipmon >>>> /etc/rc.d/mdconfig2 >>>> /etc/rc.d/kdc >>>> >>> >>> Kevin... many thanks, for this I was really thinking the same... "I jus= t >>> installed the ports and the system was upgrade properly WTH did I do wr= ong". >>> >>> I've reinstalled the the ports of the affected scripts to be sure I'm >>> running the most updated version, I still see the issues so now I'lll h= ave >>> to go one by one and see if I can fix them, or maybe start by moving th= em >>> elsewhere and run rcorder until its happy and then move back one by one= and >>> rcorder should start complaining... >>> >>> But just so I try to understand this better.... dbus and webcamd have a >>> circular dependency... is this beacause: >>> webcamd requires "FILESYSTEMS netif dbus" >>> dbus requires "DAEMON ldconfig" >>> >>> And then ldconfig also requires FILESYSTEMS? >>> >>> >>> >> Acctaully dnscrypt-proxy is running just after SERVERS and this requires >> ldconfig but does not run it before... Example: >> >> etc/rc.d/netif >> /etc/rc.d/devd >> /etc/rc.d/ipsec >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/devfs'. >> /etc/rc.d/devfs >> /etc/rc.d/ipmon >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/mdconfig2'. >> /etc/rc.d/mdconfig2 >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/newsyslog'. >> /etc/rc.d/newsyslog >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/syslogd'. >> /etc/rc.d/syslogd >> rcorder: Circular dependency on provision `NETWORKING' in file >> `/etc/rc.d/kdc'. >> /etc/rc.d/kdc >> /etc/rc.d/watchdogd >> /etc/rc.d/savecore >> rcorder: Circular dependency on provision `ldconfig' in file >> `/etc/rc.d/SERVERS'. >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/archdep'. >> /etc/rc.d/archdep >> /etc/rc.d/abi >> rcorder: Circular dependency on provision `mountcritremote' in file >> `/etc/rc.d/SERVERS'. >> /etc/rc.d/SERVERS >> /usr/local/etc/rc.d/dnscrypt-proxy >> /etc/rc.d/resolv >> /etc/rc.d/local_unbound >> /etc/rc.d/atm2 >> /etc/rc.d/pfsync >> /etc/rc.d/pflog >> /etc/rc.d/pf >> /etc/rc.d/stf >> /etc/rc.d/ppp >> /etc/rc.d/routing >> /etc/rc.d/mroute6d >> /etc/rc.d/nsswitch >> /etc/rc.d/rtsold >> /etc/rc.d/static_ndp >> /etc/rc.d/static_arp >> /etc/rc.d/bridge >> /etc/rc.d/route6d >> /etc/rc.d/routed >> /etc/rc.d/defaultroute >> /etc/rc.d/ipfw >> /etc/rc.d/NETWORKING >> >> >> If I just leave SERVERS out of dnscrypt-proxy the order seems ok (not >> sure if perfect). >> SERVERS now runs after NETWORKING, and still runs because DEAMON require= s >> SERVERS and a bunch of the rc.d's require DEAMON ofc... >> >> Now its more like this (just shoing some to proof dnscrypt-proxy is >> better placed now: >> % rcorder /etc/rc.d/* /usr/local/etc/rc.d/* | egrep >> "SERVERS|ldconfig|dnscrypt|DAEMON|NETWORKING|FILESYSTEMS|sshd" >> rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown provision >> `kerberos' >> rcorder: file `/usr/local/etc/rc.d/tcsd' is before unknown provision >> `named' >> rcorder: Circular dependency on file `/usr/local/etc/rc.d/webcamd'. >> rcorder: Circular dependency on provision `dbus' in file >> `/usr/local/etc/rc.d/webcamd'. >> rcorder: Circular dependency on file `/usr/local/etc/rc.d/uuidd'. >> rcorder: requirement `usbd' in file `/usr/local/etc/rc.d/hald' has no >> providers. >> /etc/rc.d/FILESYSTEMS >> /etc/rc.d/NETWORKING >> /etc/rc.d/ldconfig >> /etc/rc.d/SERVERS >> /etc/rc.d/DAEMON >> /etc/rc.d/sshd >> /usr/local/etc/rc.d/dnscrypt-proxy >> >> >> So basically if SERVERS is required by dnscrypt-proxy ldconfig (and >> others) complain about "Circular dependency" issues and don't run, I hav= e >> no idea why, but could somebody try to replicate the issue in freebsd >> current (by installing dnscrypt-proxy I mean)? >> >> thanks >> >> > Actually I have another box with Current: > > I can not reproduce the issue, dnscrypt and SERVERS have the same in > "REQUIRE" > > The order machine as a older kernel/world version: > > FreeBSD hpbsd 11.0-CURRENT FreeBSD 11.0-CURRENT #7 b6a4dfa(master)-dirty: > Tue Feb 10 22:21:46 WET 2015 root@hpbsd:/usr/obj/usr/src/sys/GENERIC-= NODEBUG > amd > > > FreeBSD r2d2 11.0-CURRENT FreeBSD 11.0-CURRENT #9 > r279098+c2ec8fb(master)-dirty <--- this is the one where I see the issue! > Sorry for being slow to respond. I've been a bit busy. Oddly, being retired does not seem to give me much more free time.) I see a clear issue in the devfs startup. It comes innediately after ipsec which has: # BEFORE: DAEMON mountcritremote while devfs has: # REQUIRE: mountcritremote I can't figure out why devfs is being started here, but it is wrong! Clearly, mountcritremote is not provided at this point. Still, thi is a side issue. I can say that dns/dnscrypt-proxy is broken as it has: # REQUIRE: SERVERS cleanvar # BEFORE: named local_unbound unbound dnscrypt-proxy -->SERVERS -->mountcritremote -->NETWORKING -->local_unbound (but dnscrypt-proxy must be before local_unbound! ("-->" means requires) So it has to come after SERVERS but before local_unbound. But NETWORKING depends on local_unbound they are both dependent on NEWORKING which has to be after SERVERS. Can you say fubar! Clearly broken. And this means that removing SERVERS will re-shuffle the order more appropriately. It seems that the behavior of rcorder is not as documented as well as being undefined when circular dependencies occur. The man page says that rcorder aborts when it encounters a circular dependency, but that is not the case. It probably is best that it not die, but that leaves things in an unknown and inconsistant state, which is also a very bad idea. I guess when a circular dependency is encountered, a dichotomy occurs. -- Kevin Oberman, Network Engineer, Retired E-mail: rkoberman@gmail.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAN6yY1tpyinY1yueHY8Tr=igQbkTpwJBdz9-aUwQ5xdMqiVf-A>