[Mono-bugs] [Bug 707624] New: Crash the process start on busy machine

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Jul 22 05:06:52 EDT 2011


https://bugzilla.novell.com/show_bug.cgi?id=707624

https://bugzilla.novell.com/show_bug.cgi?id=707624#c0


           Summary: Crash the process start on busy machine
    Classification: Mono
           Product: Mono: Runtime
           Version: 2.10.x
          Platform: x86-64
        OS/Version: RHEL 5
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: misc
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: Yury at serdyuk.botik.ru
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.10)
Gecko/20100914 Firefox/3.6.10

The test code is ProcessTest (in fact, A.cs ) from
http://lists.ximian.com/pipermail/mono-bugs/2009-January/084380.html

On empty machine the test code works good:

>$ mono A.exe
>started, waiting for handles
>True

To get the crash it is needed to run heavy application on all cores of the
machine and then run the test.
Then we have:

> $ mono A.exe

Unhandled Exception: System.InvalidOperationException: Standard error has not
been redirected or process has not been start
  at System.Diagnostics.Process.BeginErrorReadLine () [0x00000] in <filename
unknown>:0
  at (wrapper remoting-invoke-with-check)
System.Diagnostics.Process:BeginErrorReadLine ()
  at A.Main () [0x00000] in <filename unknown>:0




Reproducible: Always

Steps to Reproduce:
1. Compile the code

using System;
using System.Diagnostics;
using System.Threading;

public class A
{
                // Plain copy paste from test
trunk/mcs/class/System/Test/System.Diagnostics/ProcessTest.cs:TestEventRaising
                public static void Main()
                {
                        EventWaitHandle errorClosed = new
ManualResetEvent(false);
                        EventWaitHandle outClosed = new
ManualResetEvent(false);
                        EventWaitHandle exited = new ManualResetEvent(false);

                        Process p = new Process();
                        p.StartInfo.UseShellExecute = false;
                        p.StartInfo.RedirectStandardOutput = true;
                        p.StartInfo.RedirectStandardError = true;
                        p.StartInfo.RedirectStandardInput = false;
                        p.OutputDataReceived += (object sender,
                        DataReceivedEventArgs e) => {
                                if (e.Data == null) {
                                        outClosed.Set();
                                }
                        };

                        p.ErrorDataReceived += (object sender,
                        DataReceivedEventArgs e) => {
                                if (e.Data == null) {
                                        errorClosed.Set();
                                }
                        };

                        p.Exited += (object sender, EventArgs e) => {
                                exited.Set ();
                        };

                        p.EnableRaisingEvents = true;

                        //if (RunningOnUnix){
                                p.StartInfo.FileName = "/bin/ls";
                                p.StartInfo.Arguments = "/";
                        /*} else {
                                p.StartInfo.FileName = "help";
                                p.StartInfo.Arguments = "";
                        }*/

                        p.Start();

                        p.BeginErrorReadLine();
                        p.BeginOutputReadLine();

                        Console.WriteLine("started, waiting for handles");
                        bool r = WaitHandle.WaitAll(new WaitHandle[] {
errorClosed, outClosed, exited }, 10000, false);

                        //Assert.AreEqual (true, r, "Null Argument Events
Raised");
                        System.Console.WriteLine(r);
                }
}

2.  Run a heavy application which uses all cores on the machine.

3.  Run the test code.
Actual Results:  
> $ mono A.exe

Unhandled Exception: System.InvalidOperationException: Standard error has not
been redirected or process has not been start
  at System.Diagnostics.Process.BeginErrorReadLine () [0x00000] in <filename
unknown>:0
  at (wrapper remoting-invoke-with-check)
System.Diagnostics.Process:BeginErrorReadLine ()
  at A.Main () [0x00000] in <filename unknown>:0

Expected Results:  
>$ mono A.exe
>started, waiting for handles
>True

> cat /proc/cpuinfo

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Xeon(R) CPU           E5472  @ 3.00GHz
stepping        : 6
cpu MHz         : 3000.352
cache size      : 6144 KB

$ uname -a
Linux node-63-01 2.6.32-hpc-skif-alt0.M41.1 #1 SMP Tue Mar 29 10:51:56 MSD 2011
x86_64 GNU/Linux


 $ mono -V
Mono JIT compiler version 2.10.2 (tarball Thu Jul 21 16:41:14 MSD 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            Included Boehm (with typed GC and Parallel Mark)

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list