Bug 55219 - devel/fam: NFS support broken
Summary: devel/fam: NFS support broken
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: FreeBSD Ports Bugs (Mailing List)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-08-03 21:50 UTC by q
Modified: 2003-10-09 12:54 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description q 2003-08-03 21:50:15 UTC
An assertion in fam fails when it should monitor NFS files/dirs.

Fix: 

Don't know.
How-To-Repeat: $ fam -d -v

Start kmplayer as a user, who's $HOME is mounted via NFS

(gdb) r -f -v
Starting program: /usr/local/bin/fam -f -v
fam[13539]: log level is LOG_INFO
fam[13539]: Shutting down connection
fam[13539]: built with IMonNone, so /dev/imon won't be opened.
fam[13539]: Couldn't create RPC TCP/IP client: Invalid argument
Assertion failed: (!strncmp(local_path, dir(), local_dir_len)), function hl_map_path, file NFSFileSy
stem.c++, line 222.

Program received signal SIGABRT, Aborted.
(gdb) bt
#0  0x281ad473 in kill () at {standard input}:15
#1  0x2821827c in abort () at /usr/src/lib/libc/stdlib/abort.c:72
#2  0x281f16ff in __assert () at /usr/src/lib/libc/gen/assert.c:58
#3  0x080579f0 in NFSFileSystem::hl_map_path(char*, char const*, Cred const&) (this=0x8070000, 
    remote_path=0xbfbfe9d0 "$ \a\b\f \006\b\001", path=0x806d400 "/usr/local/share/servicetypes", 
    cr=@0x8071488) at NFSFileSystem.c++:222
#4  0x080578d3 in NFSFileSystem::hl_monitor(ClientInterest*, ClientInterest::Type) (
    this=0x8070000, ci=0x8071400, type=DIRECTORY) at NFSFileSystem.c++:194
#5  0x0804e310 in FileSystem::monitor(ClientInterest*, ClientInterest::Type) (this=0x8070000, 
    cip=0x8071400, type=DIRECTORY) at FileSystem.c++:63
#6  0x0804a751 in ClientInterest (this=0x8071400, name=0xbfbfef20 "/usr/local/share/servicetypes", 
    c=0x8072800, r=2, cr=@0xbfbfef00, type=DIRECTORY) at ClientInterest.c++:54
#7  0x0804c80c in Directory (this=0x8071400, name=0xbfbfef20 "/usr/local/share/servicetypes", 
    c=0x8072800, r=2, cr=@0xbfbfef00) at Directory.c++:46
#8  0x08055790 in MxClient::monitor_dir(int, char const*, Cred const&) (this=0x8072800, request=2, 
    path=0xbfbfef20 "/usr/local/share/servicetypes", cred=@0xbfbfef00) at MxClient.c++:92
#9  0x0805fbd8 in TCP_Client::input_msg(char const*, int) (this=0x8072800, 
    msg=0x8072842 "M2 1000 0 /usr/local/share/servicetypes\n", size=75) at TCP_Client.c++:198
#10 0x0805f703 in TCP_Client::input_handler(char const*, unsigned, void*) (
    msg=0x8072842 "M2 1000 0 /usr/local/share/servicetypes\n", nbytes=75, closure=0x8072800)
    at TCP_Client.c++:69
#11 0x0804a4e7 in ClientConnection::input_msg(char const*, unsigned) (this=0x807282c, 
    msg=0x8072842 "M2 1000 0 /usr/local/share/servicetypes\n", nbytes=75)
    at ClientConnection.c++:40
#12 0x0805816b in NetConnection::deliver_input() (this=0x807282c) at NetConnection.c++:170
#13 0x08058095 in NetConnection::input() (this=0x807282c) at NetConnection.c++:144
#14 0x08057f9f in NetConnection::read_handler(int, void*) (fd=9, closure=0x807282c)
    at NetConnection.c++:114
#15 0x0805ca92 in Scheduler::handle_io(fd_set const*, Scheduler::FDInfo::FDIOHandler Scheduler::FDIn
#16 0x0805cb6c in Scheduler::select() () at Scheduler.c++:343
#17 0x08060fcd in Scheduler::loop() () at Scheduler.h:89
#18 0x0806089a in main (argc=3, argv=0xbfbff65c) at main.c++:290
#19 0x08049f95 in _start ()
(gdb) f 3
#3  0x080579f0 in NFSFileSystem::hl_map_path(char*, char const*, Cred const&) (this=0x8070000, 
    remote_path=0xbfbfe9d0 "$ \a\b\f \006\b\001", path=0x806d400 "/usr/local/share/servicetypes", 
    cr=@0x8071488) at NFSFileSystem.c++:222
222         {   assert(!strncmp(local_path, dir(), local_dir_len));
Current language:  auto; currently c++
(gdb) l
217     NFSFileSystem::hl_map_path(char *remote_path, const char *path, const Cred& cr)
218     {
219         char local_path[PATH_MAX];
220         cr.become_user();
221         if (realpath(path, local_path))
222         {   assert(!strncmp(local_path, dir(), local_dir_len));
223             (void) strcpy(remote_path, remote_dir);
224             (void) strcpy(remote_path + remote_dir_len,
225                            local_path + local_dir_len);
226         }
(gdb) p path
$1 = 0x806d400 "/usr/local/share/servicetypes"
(gdb) p local_path
$2 = "/usr/local/share/servicetypes\0types\0\200\001\a\b\224í¿¿\024s!(\r\0\0\0Ôv\"(øå¿¿ðé¿¿built with IMonNone, so /dev/imon won't be opened.\n(\0\0\0\001Ðá\a(\2200\b(\0\0\0\0dæ¿¿7Å\006(À\221\004\b²\232«\a\0%\b(\001\0\0\0\222v!(\0%\b(\204æ¿\001Ðá\a(=\0\0\0\0\0\0\0äæ¿¿FÃ\006(\236q!(²\232«\a\bÐ\a("...
(gdb) p mydir    ( dir() is a macro, which returns mydir)
$6 = 0x806f2f0 "/usr/home"

Where does "/usr/local/share/servicetypes" come from?
Comment 1 Edwin Groothuis freebsd_committer 2003-10-09 12:54:36 UTC
State Changed
From-To: open->closed

Please take this up with the authors of FAM: http://oss.sgi.com/projects/fam/