[parisc-linux] killing a set of user processes causes system reboot
John David Anglin
dave at hiauly1.hia.nrc.ca
Sat Dec 16 10:36:04 MST 2006
> FYI I've been running gcc builds on my c3k to reproduce this, but I
> haven't seen anything like this.
A little more info.
I'm seeing this almost every time with GCC 4.2.0 branch using
vmlinux-2.6.18-rc7-pa1 or vmlinux-2.6.19-g211c7899-dirty. The
kernels are 32-bit with the default c3000 config. It's happened
in the last two builds and checks running the libjava testsuite.
The tests timeout, so I would think the dejagnu/tcl framework
would have tried to kill them when the timeout occured.
Within a group of processes that are stuck, I can kill all but one
without causing a system reboot. The processes appear stuck in the
kernel. I don't see any activity with strace.
I often see this with the Process_3.java test. For example,
http://gcc.gnu.org/ml/gcc-testresults/2006-12/msg00637.html
Dave
--
J. David Anglin dave.anglin at nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)
// Create a process and pipe data through it. waitFor() the process
// in a different thread than the one that created it.
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
public class Process_3 implements Runnable
{
Process p;
public void run()
{
try
{
Runtime r = Runtime.getRuntime();
String[] a = { "sed", "-e", "s/Hello/Goodbye/" };
synchronized (this)
{
p = r.exec(a);
this.notifyAll();
}
OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("Hello World");
ps.close();
}
catch (Exception ex)
{
System.out.println(ex.toString());
System.exit(1);
}
}
public static void main(String[] args)
{
try
{
Process_3 p3 = new Process_3();
Thread t = new Thread(p3);
t.start();
synchronized (p3)
{
while (p3.p == null)
p3.wait();
}
InputStream is = p3.p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String result = br.readLine();
if (! "Goodbye World".equals(result))
{
System.out.println("bad 1");
return;
}
result = br.readLine();
if (result != null)
{
System.out.println("bad 2");
return;
}
int c = p3.p.waitFor();
System.out.println(c == 0 ? "ok" : "bad 3");
}
catch (Exception ex)
{
System.out.println(ex.toString());
}
}
}
More information about the parisc-linux
mailing list