In continuing to research this, I see there's a lot of interesting code in lwp 
that can be enabled by defining DEBUG.  So just to give it a whirl, I added a 
line to lwp.h:

#define DEBUG 1

And recompiled just lwp and kauth.  Now the resulting klog works.  Very 
bizarre...  I'm not sure what to make of it yet.

-Ben

________________________________
From: openafs-devel-ad...@openafs.org <openafs-devel-ad...@openafs.org> on 
behalf of Ben Huntsman <b...@huntsmans.net>
Sent: Monday, November 11, 2024 12:26 PM
To: openafs-devel@openafs.org <openafs-devel@openafs.org>
Subject: [OpenAFS-devel] kauth broken - problem with IOMGR in lwp?

Hi everyone-
   First of all, please don't laugh, but I do have an older test cell that runs 
kauth instead of krb5.  This is at home, not for anything production, so don't 
worry.

   That being said, is kauth currently broken?  A colleague of mine tried it on 
Linux and gets a segfault when running klog, and I get the same behavior on AIX:

$ dbx /usr/afs/bin/klog core
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

Segmentation fault in unnamed block in IOMGR at line 362 in file "iomgr.c"
  362           FD_ZERO(&IOMGR_writefds);
(dbx) where
libdebug assertion "(framep->getGpr(STKP, &addr) == DB_SUCCESS && *nextStkpp == 
addr)" failed at line 1418 in file 
../../../../../../../../../../../src/bos/usr/ccs/lib/libdbx/libdebug/modules/stackdebug/POWER/stackdb_FrameProgress.C
unnamed block in IOMGR(dummy = (nil)), line 362 in "iomgr.c"
(dbx)

And here's a blurb from around that line in src/lwp/iomgr.c:
...
/* These are not declared in IOMGR so that they don't use up 6K of stack. */
static fd_set IOMGR_readfds, IOMGR_writefds, IOMGR_exceptfds;
static int IOMGR_nfds = 0;

static void *IOMGR(void *dummy)
{
    for (;;) {
        int code;
        struct TM_Elem *earliest;
        struct timeval timeout, junk;
        bool woke_someone;

        FD_ZERO(&IOMGR_readfds);
        FD_ZERO(&IOMGR_writefds);
        FD_ZERO(&IOMGR_exceptfds);
        IOMGR_nfds = 0;
...


   I did the compile with the ./configure --enable-debug and -enable-debug-lwp 
options specified.  Can someone help explain how this code works, and what 
might done to fix it?  I'm a little fuzzy on the *IOMGR piece and I don't see 
that anyone calls IOMGR() directly in the code...

Thank you!

-Ben

Reply via email to