Bug 4838 - Frysk UI will not start under F7 kernel 2.6.22.1-27
Summary: Frysk UI will not start under F7 kernel 2.6.22.1-27
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Unassigned
URL:
Keywords:
Depends on:
Blocks: 1633
  Show dependency treegraph
 
Reported: 2007-07-24 19:01 UTC by Rick Moseley
Modified: 2007-07-25 12:03 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rick Moseley 2007-07-24 19:01:47 UTC
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.
Comment 1 Mark Wielaard 2007-07-24 19:53:13 UTC
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.
Comment 2 Mark Wielaard 2007-07-25 11:22:31 UTC
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)
Comment 3 Mark Wielaard 2007-07-25 12:03:22 UTC
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.