[OpenAFS] Re: freezes acessing /afs/.git
Markus Koeberl
spsc-sysadmin@mlist.tugraz.at
Thu, 14 Aug 2014 10:06:31 +0200
--Boundary-01=_H4G7TImvLup4KcU
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
On Thursday 14 August 2014 05:26:36 Andrew Deason wrote:
> On Wed, 13 Aug 2014 17:45:17 +0200
> Markus K=C3=B6berl <markus.koeberl@tugraz.at> wrote:
>=20
> > What about an option to change the behavior of 3. to:
> >=20
> > 3. If no server list was found in CellServDB and afsdb lookups are
> > enabled, use DNS SRV/AFSDB records to try to find a match only if=
=20
> > the search term includes at least one ".". Use DNS SRV/AFSDB queri=
es
> > but deny the resolver the usage of the domain search lists.
>=20
> This generally sounds reasonable to me. But I think you want to just
> require a dot if the name doesn't exist in the csdb at all, so you can
> just put it in the local csdb if you want to use it, without needing to
> alias it to a full cell name. (This may have been mentioned earlier, but
> I don't see it here.) I'd call such an option -afsdb-ndots, which would
> set the minimum number of dots (like resolv.conf's "option ndots").
This would require changing the format of the CellServDB or did I get somet=
hing wrong?
> However, this doesn't solve the issue when files like libX11.so or
> beamer.cls like in your captured list. You really need a blacklist for
> these, or we can just try to improve the negative caching. iirc, we
> already have some hard-coded 'blacklist' entries to appease things like
> OS X's Finder, so a configurable blacklist doesn't seem like such a big
> change. Doing any actual pattern matching could be done in userspace and
> can be very slow if we just cache results in the kernel (keep a
> 'negative' cell struct around).
=46or normal working I think it would be enough if we try to limit the quer=
ies for SRV records.
One way would be to ignore the domain search lists and another to require a=
dot in the query.=20
Providing a way to manage the blacklist which is already available would be=
very useful especially if we have a "fs setblacklist" command in addition =
to a config file. I would add the following entries for my cell:
directory=20
dropbox
git
hg
svn
Trash
Trash-1000
> Some of the entries in your earlier captured list I'm a little
> confused/concerned by, though:
>=20
> On Wed, 06 Aug 2014 21:46:42 +0200
> Markus K=C3=B6berl <markus.koeberl@tugraz.at> wrote:
>=20
> > libX11.so
> > libX11.so.6
> > libX11.so.6.la
> > libX11.so.6.so
> > libX11.so.la
> > libX11.so.so
>=20
> You really have something that tries to load libraries from the current
> directory (or some ancestor directory)? What if you're in /tmp, or some
> other world-writeable dir? Someone could put a libX11.so in there and
> run arbitrary code as you.
Unbelievable but yes: It is the Midnight Commander (mc)
The list you quoted is from the mc from debian testing.
> > *.ltx
>=20
> Are these literal '*' characters, by the way? (That is, it's a failed
> glob, not a just a bunch of different entries that end with '.ltx')
Yes it is a failed glob produced by kile.
$ strace -e trace=3Dstat kile 2>&1 | grep 'stat("\*'
stat("*.tex", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.ltx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.latex", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.dtx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.ins", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.cls", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.sty", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.bbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.cbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.lbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.bib", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
stat("*.mp", 0x7fff694b05f0) =3D -1 ENOENT (No such file or dire=
ctory)
> With some of these entries, even a blacklist will not solve everything.
> It's not possible to know with certainty that libx11.so or matlab7rc.sh
> are not valid cell names without querying dns first; they could be in
> the future. Maybe more-obviously ambiguous examples would be
> 'liberty.so', a real library, or 'brew.sh', a real domain.
Yes but this should not be a problem as long people do not change to /afs a=
nd then start the application.
It should be possible to teach them not to do this...
> A blacklist might help for a vast majority of cases, though. Or of
> course we could just improve the caching, so only the first lookup is
> slow... would that be good enough, if done "well"?
A improved caching would be very nice for the bash completion.
regards
Markus
=2D-=20
Markus Koeberl
Graz University of Technology
Signal Processing and Speech Communication Laboratory
E-mail: markus.koeberl@tugraz.at
--Boundary-01=_H4G7TImvLup4KcU
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-=
html40/strict.dtd">
<html><head><meta name=3D"qrichtext" content=3D"1" /><style type=3D"text/cs=
s">
p, li { white-space: pre-wrap; }
</style></head><body style=3D" font-family:'DejaVu Sans Mono'; font-size:9p=
t; font-weight:400; font-style:normal;">
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">On Thursday=
14 August 2014 05:26:36 Andrew Deason wrote:</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> On Wed=
, 13 Aug 2014 17:45:17 +0200</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Markus=
K=C3=B6berl <markus.koeberl@tugraz.at> wrote:</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > W=
hat about an option to change the behavior of 3. to:</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > <=
/p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > =
3. If no server list was found in CellServDB and afsdb lookups are</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > =
enabled, use DNS SRV/AFSDB records to try to find a match only if </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > =
the search term includes at least one ".". Use DNS SRV/AFSDB =
queries</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > =
but deny the resolver the usage of the domain search lists.</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> This g=
enerally sounds reasonable to me. But I think you want to just</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> requir=
e a dot if the name doesn't exist in the csdb at all, so you can</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> just p=
ut it in the local csdb if you want to use it, without needing to</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> alias =
it to a full cell name. (This may have been mentioned earlier, but</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> I don'=
t see it here.) I'd call such an option -afsdb-ndots, which would</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> set th=
e minimum number of dots (like resolv.conf's "option ndots").</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">This would =
require changing the format of the CellServDB or did I get something wrong?=
</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Howeve=
r, this doesn't solve the issue when files like libX11.so or</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> beamer=
=2Ecls like in your captured list. You really need a blacklist for</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> these,=
or we can just try to improve the negative caching. iirc, we</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> alread=
y have some hard-coded 'blacklist' entries to appease things like</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> OS X's=
Finder, so a configurable blacklist doesn't seem like such a big</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> change=
=2E Doing any actual pattern matching could be done in userspace and</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> can be=
very slow if we just cache results in the kernel (keep a</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> 'negat=
ive' cell struct around).</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">For normal =
working I think it would be enough if we try to limit the queries for SRV r=
ecords.</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">One way wou=
ld be to ignore the domain search lists and another to require a dot in the=
query. </p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Providing a=
way to manage the blacklist which is already available would be very usefu=
l especially if we have a "fs setblacklist" command in addition t=
o a config file. I would add the following entries for my cell:</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">directory <=
/p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">dropbox</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">git</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">hg</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">svn</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Trash</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Trash-1000<=
/p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Some o=
f the entries in your earlier captured list I'm a little</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> confus=
ed/concerned by, though:</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> On Wed=
, 06 Aug 2014 21:46:42 +0200</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Markus=
K=C3=B6berl <markus.koeberl@tugraz.at> wrote:</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so.6</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so.6.la</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so.6.so</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so.la</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > l=
ibX11.so.so</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> You re=
ally have something that tries to load libraries from the current</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> direct=
ory (or some ancestor directory)? What if you're in /tmp, or some</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> other =
world-writeable dir? Someone could put a libX11.so in there and</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> run ar=
bitrary code as you.</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Unbelievabl=
e but yes: It is the Midnight Commander (mc)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">The list yo=
u quoted is from the mc from debian testing.</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > *=
=2Eltx</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> Are th=
ese literal '*' characters, by the way? (That is, it's a failed</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> glob, =
not a just a bunch of different entries that end with '.ltx')</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Yes it is a=
failed glob produced by kile.</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">$ strace -e=
trace=3Dstat kile 2>&1 | grep 'stat("\*'</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.tex", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.ltx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.latex", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.dtx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.ins", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.cls", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.sty", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.bbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.cbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.lbx", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.bib", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">stat("=
*.mp", 0x7fff694b05f0) =3D -1 ENOENT (No such file or direc=
tory)</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> With s=
ome of these entries, even a blacklist will not solve everything.</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> It's n=
ot possible to know with certainty that libx11.so or matlab7rc.sh</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> are no=
t valid cell names without querying dns first; they could be in</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> the fu=
ture. Maybe more-obviously ambiguous examples would be</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> 'liber=
ty.so', a real library, or 'brew.sh', a real domain.</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Yes but thi=
s should not be a problem as long people do not change to /afs and then sta=
rt the application.</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">It should b=
e possible to teach them not to do this...</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> A blac=
klist might help for a vast majority of cases, though. Or of</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> course=
we could just improve the caching, so only the first lookup is</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> slow..=
=2E would that be good enough, if done "well"?</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">A improved =
caching would be very nice for the bash completion.</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">regards</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Markus</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Markus Koeb=
erl</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Graz Univer=
sity of Technology</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Signal Proc=
essing and Speech Communication Laboratory</p>
<p style=3D" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-rig=
ht:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">E-mail: mar=
kus.koeberl@tugraz.at</p>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; ">&nb=
sp;</p></body></html>
--Boundary-01=_H4G7TImvLup4KcU--