Subscribe Bookmark RSS Feed

Windows 7 vs Windows 10

vishwasanj

Frequent Contributor

Joined:

Dec 27, 2016

Hi All,

 

 

When I create multiple instances of JMP as .jsl file calling different folders, some times JMP is running in the background even after exit() code. I am using Windows 10.

 

If I rerun it on the same stuck on JMP files, it works fine and gets out.

Is it because of Windows 10 issue or is it because JMP cannot handle 100 or more instances at a time?

 

Thanks.

 

 

7 REPLIES
briancorcoran

Joined:

Jun 23, 2011

JMP is memory based.  If you have 100 instances up simultaneously then you will need 100x(per instance RAM).  Depending on data, that would be a minimum of 12 GB on a 64-bit system.  The footprint can vary between OS's, so it is possible you are using more on Windows 10?  How much memory do you have?  What version of Windows 10 are you using?

 

Thanks,


Brian Corcoran

JMP Development

vishwasanj

Frequent Contributor

Joined:

Dec 27, 2016

Thanks Brian for the reply. I have 40Gb RAM and Windows 10 Pro.

vishwasanj

Frequent Contributor

Joined:

Dec 27, 2016

Hi Brian,

Do you think wait() function will help. When and where to use the function?

Thanks,
Craige_Hales

Staff

Joined:

Mar 21, 2013

What does your JSL do? How do you know the exit function was called but the JMP instance is still running? Is there anything in the log window?

 

Craige
vishwasanj

Frequent Contributor

Joined:

Dec 27, 2016

It plots a bunch of .jrn, .png and .txt files in the specific folder and shows a completed.txt file and quits.
In the process hacker window, JMP is still open for a few instances that I had to manually close it.
If I run it again, when less number of instances, it works fine and I don't see any JMP stuck.
That's why I was wondering whether when you are running multiple instances, does using wait() will actually help? If so, when and where should I use wait()? Any known issues with interaction of some other program with JMP in windows 10?

 

Application: jmp.exe
Framework Version: v4.0.30319
Description: The application requested process termination through System.Environment.FailFast(string message).
Message: Unrecoverable system error.
Stack:
at System.Environment.FailFast(System.String)
at System.Windows.Controls.WebBrowser.TabIntoCore(System.Windows.Input.TraversalRequest)
at System.Windows.Controls.WebBrowser.OnLoadCompleted(System.Windows.Navigation.NavigationEventArgs)
at MS.Internal.Controls.WebBrowserEvent.DocumentComplete(System.Object, System.Object ByRef)
at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
at MS.Win32.UnsafeNativeMethods+IWebBrowser2.Navigate2(System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef, System.Object ByRef)
at System.Windows.Controls.WebBrowser.DoNavigate(System.Uri, System.Object ByRef, System.Object ByRef, System.Object ByRef, Boolean)
at WinHost.TipView.showCurrentTip()
at WinHost.TipView..ctor()
at <Module>.WinHost.newTipView()
at WinHost.WpfApp.processPendingIdleRequests()
at WinHost.WpfApp.doIdleTimeProcessing()
at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
at System.Delegate.DynamicInvokeImpl(System.Object[])
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at WinHost.WpfApp.Run()

Craige_Hales

Staff

Joined:

Mar 21, 2013

If I understand correctly, you have 100+ instances of JMP running at the same time. I suspect they are using up some resource (memory perhaps, or file handles, or ...) and either JMP or Windows is having a hard time recovering from an error.

I'd suggest modifying the code that starts the JMP instances to limit the number running at the same time. I don't know what the optimum number will be for speed, but I'd guess under 16 on a typical desktop. 

Craige
vishwasanj

Frequent Contributor

Joined:

Dec 27, 2016

Thank you Craige for the explanation.
Can you explain me the concept of wait() and when and where to use? How is it beneficial?