Skip Menu |
 

Date: Sun, 01 Dec 2013 22:38:04 -0500
From: Richard Basch <basch@alum.mit.edu>
Subject: krb5-1.12 beta2 - kpropd ulog_replay failed error
To: krb5-bugs@mit.edu

I just hit a spurious error which is inexplicable by my patches (none of my patches should have resulted in this):

 

               kpropd[xxx]: ulog_replay failed (Unable to load requested database module ‘db2’:plugin symbol ‘kdb_function_table’ not found), updates not registered.

 

The only thing I can think of is the process may have been signaled with USR1, which resets the timer state (existing SIGUSR1 handler). That means there is existing code which is not signal-interruptible. All my patches were in the other process fork (the sub-process listening for full kprop messages; the only thing I do is signal the iprop process via the existing USR1 handler).

 

It also means if anyone ever sends a USR1 out-of-band, they might hit this condition.

 

That error comes from kdb5.c line 428, which happens if
krb5int_get_plugin_dir_data succeeds but returns an empty list. If the
plugin functions had encountered an EINTR (which I don't think is even
possible with opendir/readdir/dlopen), then a different error would be
generated--either "Unable to find requested database type" or "plugin
symbol 'kdb_function_table' lookup failed". So, I don't really like the
SIGUSR1 theory. I don't have another theory, though.

Also of note: that code path is only executed for the first KDB function
for a context. After that the DB2 vtable is picked out of the cache by
kdb_find_library().