When trying to activate the Frysk UI, it aborts at startup with the following error: (No exception message provided) open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(Stat.cxx:58) at frysk.proc.live.LinuxHost$ProcChanges.update(LinuxHost.java:120) at frysk.proc.live.LinuxHost$ProcChanges.update(LinuxHost.java:126) at frysk.proc.live.LinuxHost$1.buildId(LinuxHost.java:168) at frysk.sys.proc.ProcBuilder.scan(ProcBuilder.cxx:86) at frysk.sys.proc.ProcBuilder.construct(ProcBuilder.java:63) at frysk.sys.proc.ProcBuilder.construct(ProcBuilder.java:80) at frysk.proc.live.LinuxHost.sendRefresh(LinuxHost.java:171) at frysk.proc.HostState.handleRefresh(HostState.java:66) at frysk.proc.Host$1.execute(Host.java:195) at frysk.event.EventLoop.runEventLoop(EventLoop.java:373) at frysk.event.EventLoop.run(EventLoop.java:485) at frysk.gui.Gui$5.run(Gui.java:359) at java.lang.Thread.run(libgcj.so.8rh) This started happening when I updated from the 2.6.21-1.3228 kernel. Not sure if there is some significant diff between the 2.6.21 and 2.6.22 kernels or what.
Some debugging reveals: In LinuxHost ProcChanges.update() is called with pid 2. It thinks it is a new proc, to get at the parent it does a stat.refresh(2) and then does a update(stat.ppid) where stat.ppid == 0 Which is correct! process 2 is kthreadd which has ppid 0 This seems to be a new feature of 2.6.22 where kernel threads aren't children of init (1) according to the kernel, but children of kthreadd.
This is also causing the following test failures: 7) testFindAndRefreshFailed(frysk.proc.TestFindProc)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$2.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$2.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPolling(TestRunner) at frysk.testbed.TestLib.assertRunUntilStop(TestRunner) at frysk.testbed.TestLib.assertRunUntilStop(TestRunner) at frysk.proc.TestFindProc.testFindAndRefreshFailed(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 8) testFindUsingRefresh(frysk.proc.TestFindProc)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestFindProc.testFindUsingRefresh(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 9) testRepeatedHostRefresh(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testRepeatedHostRefresh(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 10) testHostRefresh(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testHostRefresh(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 11) testProcRefresh(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testProcRefresh(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 12) testParentChild(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testParentChild(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 13) testRefreshDaemon(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testRefreshDaemon(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 14) testExitLoosesChild(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testExitLoosesChild(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 15) testRefreshZombie(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testRefreshZombie(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 16) testUnattachedSingleExec(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestRefresh.testUnattachedSingleExec(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 17) testUnattachedMultipleExec(frysk.proc.TestRefresh)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.run(TestRunner) at frysk.testbed.TestLib$Child.assertFindProcAndTasks(TestRunner) at frysk.testbed.TestLib$Child.findTaskUsingRefresh(TestRunner) at frysk.proc.TestRefresh.testUnattachedMultipleExec(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner) 18) testRefreshAfterUnblockedForkExits(frysk.proc.TestTaskObserverBlocked)open: No such file or directory (file /proc/0/stat) at frysk.sys.proc.Stat.refresh(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$ProcChanges.update(TestRunner) at frysk.proc.live.LinuxHost$1.buildId(TestRunner) at frysk.sys.proc.ProcBuilder.scan(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.sys.proc.ProcBuilder.construct(TestRunner) at frysk.proc.live.LinuxHost.sendRefresh(TestRunner) at frysk.proc.HostState.handleRefresh(TestRunner) at frysk.proc.Host$1.execute(TestRunner) at frysk.event.EventLoop.runEventLoop(TestRunner) at frysk.event.EventLoop.runPending(TestRunner) at frysk.proc.TestTaskObserverBlocked.testRefreshAfterUnblockedForkExits(TestRunner) at frysk.junit.Runner.runCases(TestRunner) at frysk.junit.Runner.runArchCases(TestRunner) at frysk.junit.Runner.runTestCases(TestRunner) at TestRunner.main(TestRunner)
Fixed by: 2007-07-25 Mark Wielaard <mark@klomp.org> Fixes bug #4838 * cni/slurp.cxx (uslurp): Catch Errno after tryOpen(). (slurp): Likewise and don't free given buffer and return -1. (slurp_thread): Likewise. There is still one issue left with the gui where it throws endless NullPointerExceptions from the PickProcDialog, but that is unrelated to the above and seems to be caused by a change in Proc.getExe() that can now return null.