Subject: Re: PR 36963
To: Jan Danielsson <jan.m.danielsson@gmail.com>
From: Adam Hamsik <haaaad@gmail.com>
List: tech-kern
Date: 09/19/2007 11:47:41
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On Sep 19, 2007, at 3:55 AM, Jan Danielsson wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
>
> David Holland wrote:
>> On Wed, Sep 19, 2007 at 02:39:02AM +0200, Jan Danielsson wrote:
>>> http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=36963
>>> [...]
>>
>> Are you running a multiprocessor kernel?
>
>    No; just a single processor. Unfortunately.
>
>> (And if you haven't yet, try turning on DIAGNOSTIC and LOCKDEBUG.)
>
>    I haven't done that; I'll be sure to do that on next rebuild.
>
>>>    I would just like to check if anyone has any interest in this
>>> problem.
>>
>> Definitely - the more information you can collect, the better.
>
>    Good; I just wanted to know that I'm not wasting my time posting  
> all
> this information to the PR.
>
>> One useful thing to find out would be whether, after things stop
>> working, the process credentials stored in the kernel are still
>> correct or if they've been garbaged.
>
>    As far as I can tell, they aren't garbled I'm pretty sure I've done
> this: I open a terminal window, su to my pkgsrc user, run "ls -l",  
> which
> will fail, then run the "jan" login/logout procedure, return to the
> (still open) pkgsrc terminal window, and run "ls -l" without any
> problems. I'm not 100% sure that I have done this; although I'm pretty
> sure. I believe that behavior would be unlikely to work if the
> permissions have been garbled. (I can't test it right now, because I
> just logged in/out with my normal user, so the permission problem  
> is not
> "active"). I'll be sure to try when it appears again.
>
>> When things break, does running
>> "id" print right or wrong information?
>
>    "id" returns the correct information even when the problem is
> "active". As does "user info".
>
So we have permission denied error even we have good information.
>> Also, does ls -l (or
>> stat(2)/fstat(2) if necessary(*)) return the right owner/group and
>> permissions for the affected files?
>
>    What the fork? This is a behavior I hadn't noticed before  
> (though I'm
> very certain it has always been there -- I just haven't seen it  
> until now):
>
> nl102-238-202# su - pkgsrc
> $ ls -l
> ls: .: Permission denied
> $ ls -l update_wip
> - -rwx------  1 pkgsrc  users  158 Jun 18 05:15 update_wip
> $ ls -l
> ls: .: Permission denied
> $ ls -l upda*
> ls: upda*: No such file or directory
> $ ls -l *
> ls: *: No such file or directory
> $ ls -l .
> ls: .: Permission denied
> $ ls -l ..
> ls: ..: Permission denied
> $ ls -l /
> ls: /: Permission denied
> $ pwd
> /home/pkgsrc
> <Here I logged in, and then logged out, my "jan" user>
> $ ls -l
> total 152
> - -rwx------     1 pkgsrc  users    219 Sep  8 20:51 checkout_pkgsrc
> - -rwx------     1 pkgsrc  users    282 Jun 18 04:31 checkout_wip
> - -rwx------     1 pkgsrc  users    173 Sep  8 20:51 update_pkgsrc
> - -rwx------     1 pkgsrc  users    158 Jun 18 05:15 update_wip
> drwxr-xr-x  1797 pkgsrc  users  68608 Aug 11 16:41 wip
> $ ls -l /
> total 18411
> drwxr-xr-x   2 root  wheel      512 Sep  5 14:42 altroot
> drwxr-xr-x   2 root  wheel     1024 Sep  5 16:57 bin
> [---]

What about kauth(9) ? Can be this some unfound kauth issue lfs was  
not used too much when elad written kauth? Can you ktrace/ktruss  
failing ls ?
>
>    It's actually only the first few commands which are interesting  
> (the
> rest is old news -- I just wanted to show my cool problem off some
> more). Notice that "ls" works when I specify an exact file name(!).  
> I'll
> start working on my speech for when I accept the yearly "wtf?!"- 
> prize. :(
>
>    Also, this is what happens when I run "cvs update -dP" in pkgsrc  
> (it
> appears to actually update the repsitory, although I don't think it
> manages to create new directories), but it ends with:
>
> [---]
> cvs update: cannot open directory archivers/arc/files for empty check:
> Permission denied
> cvs update: cannot open directory archivers/arc for empty check:
> Permission denied
> cvs update: cannot open directory archivers/afio/patches for empty
> check: Permission denied
> cvs update: cannot open directory archivers/afio for empty check:
> Permission denied
> cvs update: cannot open directory archivers/advancecomp/patches for
> empty check: Permission denied
> cvs update: cannot open directory archivers/advancecomp for empty  
> check:
> Permission denied
> cvs update: cannot open directory archivers/9e/patches for empty  
> check:
> Permission denied
> cvs update: cannot open directory archivers/9e for empty check:
> Permission denied
> cvs update: cannot open directory archivers for empty check:  
> Permission
> denied
>
>
>> (*) E.g., if once it breaks you can't ls -l, or even call stat()
>> successfully, you can write a program that opens the file (or
>> directory) before things break, waits until they do, and then uses
>> fstat() on that file handle. This should get past any broken
>> permissions checks. It might also conceivably prevent the problem  
>> from
>> affecting the file in question...
>
>    I'll do that. But I'm pretty sure that it's only file/directory
> _enumerations_ which fail. Hmm... I'll try to write a program which  
> runs
> opendir(), lists a few files, and then calls readdir() (or whatever  
> it's
> called), and pauses before continuing. Then I'll instruct it to  
> continue
> once the bug reappears.
>
>    Did you see the program I posted in the PR? It show that opendir 
> (".")
> fails when the "bug" is "active"; but I can "cat" files I know to  
> exist
> without problems. I think that's a good place to start looking.  
> Though I
> may be staring myself blind on the opendir() issue. :/
>
>
> - --
> Kind regards,
> Jan Danielsson
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.7 (NetBSD)
>
> iD8DBQFG8IGKuPlHKFfKXTYRCkoZAJ4rGFG9RJDFJNWGMmcc6Kg1Uw72NACfcmNr
> 2uiH/wQ9dru4AOq1thFZeBY=
> =bq1C
> -----END PGP SIGNATURE-----

Regards
- -----------------------------------------
Adam Hamsik
jabber: haad@jabber.org
icq: 249727910

Proud NetBSD user.

We program to have fun.
Even when we program for money, we want to have fun as well.
~ Yukihiro Matsumoto




-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFG8PA9lIxPgX3Go0MRApliAKCE0orpVYSlUhqYK7Sq4u+7THc7/wCeP1JP
nBRSswJ771Vlrz/fQU0Ndpk=
=CEaX
-----END PGP SIGNATURE-----