Select.exe /Setup

Discussions related to SoftPro Select user interface development.

Moderator: Phil Barton

Post Reply
mmregan
Posts: 17
Joined: Tue Mar 09, 2010 2:27 pm

Select.exe /Setup

Post by mmregan » Fri Sep 17, 2021 11:03 pm

As part of registering a shell package with SPS, it is well documented that one must run "select.exe /setup" to build a comprehensive command table.

Unfortunately, we are running into problems trying to run this command as the Windows SYSTEM user in Windows 10. The error we run into is below. This does not seem to occur with other versions of Windows. This does not happen when running the command as a "regular" interactive user (with admin rights, or temp elevated admin right).

Is this a known issue? Is there any workaround?
Index : 162167
EntryType : Error
InstanceId : 0
Message : System.ArgumentOutOfRangeException: Value '0' is not a valid value for Interval. Interval must be greater than 0.
Parameter name: Interval
Stack Trace:
at System.Windows.Forms.Timer.set_Interval(Int32 value)
at TD.Util.?..ctor(Control control)
at TD.SandDock.DockContainer..ctor()
at TD.SandDock.SandDockManager.CreateNewDockContainerCore(ContainerDockLocation dockLocation)
at TD.SandDock.SandDockManager.CreateNewDockContainer(ContainerDockLocation dockLocation, ContainerDockEdge edge, Int32 contentSize)
at SoftPro.Select.ShellForm..ctor(IServiceProvider sp, String appName, Icon appIcon)
at SoftPro.Select.Managers.ShellManager..ctor(IServiceProvider sp, String appName, Icon appIcon)
at SoftPro.Select.RootPackage.OnInitialize()
at SoftPro.Select.Shell.Package.SoftPro.Select.Shell.IPackage.Initialize(IServiceProvider sp)
at SoftPro.Select.Runtime.OnInitialize()
at SoftPro.Select.Runtime.Start()
at SoftPro.Select.Automation.EnvICE.Start()
XML Log:
Call Stack:
at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at System.Diagnostics.TraceEventCache.get_Callstack()
at SoftPro.Select.LogTraceListener.OnLog(TraceEventCache eventCache, String message, TraceEventType eventType)
at SoftPro.Select.LogTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)
at System.Diagnostics.TraceInternal.TraceEvent(TraceEventType eventType, Int32 id, String format, Object[] args)
at SoftPro.Select.Automation.EnvICE.Start()
at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerObjectTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at SoftPro.Select.Shell.SynchronizationContextAspect.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RemotingProxy.CallProcessMessage(IMessageSink ms, IMessage reqMsg, ArrayWithSize proxySinks, Thread currentThread, Context currentContext, Boolean bSkippingContextChain)
at System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at SoftPro.Select.Automation.EnvICE.Start()
at SoftPro.Select.Automation.EnvICE.Run(String rootSuffix, Boolean noSplash, Boolean setupMode, Boolean log, Boolean embedding, Boolean allowMultipleInstances, Boolean detectLeaks, Dictionary`2 args, String freeArg)
at SoftPro.Select.Program.Main(String[] args)
Category : (0)
CategoryNumber : 0
ReplacementStrings : {System.ArgumentOutOfRangeException: Value '0' is not a valid value for Interval. Interval must be greater than 0.
Parameter name: Interval
Stack Trace:
at System.Windows.Forms.Timer.set_Interval(Int32 value)
at TD.Util.?..ctor(Control control)
at TD.SandDock.DockContainer..ctor()
at TD.SandDock.SandDockManager.CreateNewDockContainerCore(ContainerDockLocation dockLocation)
at TD.SandDock.SandDockManager.CreateNewDockContainer(ContainerDockLocation dockLocation, ContainerDockEdge edge, Int32 contentSize)
at SoftPro.Select.ShellForm..ctor(IServiceProvider sp, String appName, Icon appIcon)
at SoftPro.Select.Managers.ShellManager..ctor(IServiceProvider sp, String appName, Icon appIcon)
at SoftPro.Select.RootPackage.OnInitialize()
at SoftPro.Select.Shell.Package.SoftPro.Select.Shell.IPackage.Initialize(IServiceProvider sp)
at SoftPro.Select.Runtime.OnInitialize()
at SoftPro.Select.Runtime.Start()
at SoftPro.Select.Automation.EnvICE.Start()
XML Log:

Call Stack:
at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
at System.Environment.get_StackTrace()
at System.Diagnostics.TraceEventCache.get_Callstack()
at SoftPro.Select.LogTraceListener.OnLog(TraceEventCache eventCache, String message, TraceEventType eventType)
at SoftPro.Select.LogTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)
at System.Diagnostics.TraceInternal.TraceEvent(TraceEventType eventType, Int32 id, String format, Object[] args)
at SoftPro.Select.Automation.EnvICE.Start()
at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerObjectTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at SoftPro.Select.Shell.SynchronizationContextAspect.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Lifetime.LeaseSink.SyncProcessMessage(IMessage msg)
at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(Object[] args)
at System.Threading.Thread.CompleteCrossContextCallback(InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Threading.Thread.InternalCrossContextCallback(Context ctx, IntPtr ctxID, Int32 appDomainID, InternalCrossContextDelegate ftnToCall, Object[] args)
at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessage(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RemotingProxy.CallProcessMessage(IMessageSink ms, IMessage reqMsg, ArrayWithSize proxySinks, Thread currentThread, Context currentContext, Boolean bSkippingContextChain)
at System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at SoftPro.Select.Automation.EnvICE.Start()
at SoftPro.Select.Automation.EnvICE.Run(String rootSuffix, Boolean noSplash, Boolean setupMode, Boolean log, Boolean embedding, Boolean allowMultipleInstances, Boolean detectLeaks, Dictionary`2 args, String freeArg)
at SoftPro.Select.Program.Main(String[] args)}

Source : SoftPro Select
TimeGenerated : 9/16/2021 8:57:51 AM
TimeWritten : 9/16/2021 8:57:51 AM
UserName : NT AUTHORITY\SYSTEM

BobRichards
Posts: 1121
Joined: Wed Jan 15, 2014 3:50 pm
Location: Raleigh, NC
Contact:

Re: Select.exe /Setup

Post by BobRichards » Sun Sep 19, 2021 2:18 pm

What version of Select are you running?
Bob Richards, Senior Software Developer, SoftPro

mmregan
Posts: 17
Joined: Tue Mar 09, 2010 2:27 pm

Re: Select.exe /Setup

Post by mmregan » Sun Sep 19, 2021 8:57 pm

4.3.41

BobRichards
Posts: 1121
Joined: Wed Jan 15, 2014 3:50 pm
Location: Raleigh, NC
Contact:

Re: Select.exe /Setup

Post by BobRichards » Mon Sep 20, 2021 6:47 pm

OK. I looked and did not find any references to this issue. Let me ask a few other questions before I pass this on to R&D:

You said: "This does not seem to occur with other versions of Windows." What other versions of Windows does it work on? Is it for the same Select version you have now?

Can you send the command line the service is attempting to execute?

Thanks.
Bob Richards, Senior Software Developer, SoftPro

mmregan
Posts: 17
Joined: Tue Mar 09, 2010 2:27 pm

Re: Select.exe /Setup

Post by mmregan » Fri Sep 24, 2021 1:13 pm

Detailed Description of the issue:

When select.exe /setup is run by a user from a Windows scheduled task or a script running in the background (i.e. non-interactively), Select.exe crashes. The crash happens with the SYSTEM user, a local user who belongs to the administrators group, or a user who is not a member of the Administrators group. The crash happens even with a fresh Softpro install with no plugins installed at all. Because spregpkg.exe does not crash, a registered plugin is visible in the Select/Options screen and Windows registry. As a result the plugin appears to be correctly registered but is not functional. For example, if the plugin added commands to the Softpro order toolbar, the plugin commands will not be visible.

The crash issues started happening around March 2020, and only seems to affect recent versions of Windows. For example, Windows 10 1607 and 1809 do not seem to be affected but more recent version such as 2004 and 20H2 are affected.

The crash issue happens in Softpro 4.3.60210.48 and 4.3.60210.119.

Whenever Select.exe crashes, 3 errors are written to the Windows Event Log:

Faulting application name: Select.exe, version: 4.3.60210.119, time stamp: 0x5fa6b80b
Faulting module name: KERNELBASE.dll, version: 10.0.19041.1202, time stamp: 0x448a4f5d

Application: Select.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentOutOfRangeException
System.ArgumentOutOfRangeException: Value '0' is not a valid value for Interval. Interval must be greater than 0.
Parameter name: Interval

Business Impact : As all our PCs are now at least 2004 (released May 2020) or 20H2 (released October 2020), all our Windows 10 workstations are affected. All our custom Softpro plugins are affected. We can no longer install or update Softpro Select plugins using automated deployment tools (processes running in the background). The only way for select.exe /setup not to crash is to have someone logon to each Windows PC and run "select.exe /setup" interactively. With hundreds of users, this is impractical because select.exe /setup must be run twice any time a plugin is updated, and it must be coordinated with running spregpkg.exe twice as well (to unregister and register). In addition, spregpkg.exe requires administrative rights, something users do not have.


Steps to reproduce the issue:

Note: this can be tested with a base Softpro select install with no custom plugins installed.
- In Windows 10 Settings, go to System/About, identify the exact Windows 10 version (some older versions of Windows 10 may not experience the crash issue)
- in Windows Task Scheduler, create a new task
- In the General tab, select the SYSTEM user (run whether user is logged in or not, run with highest privs)
- in the Action tab, create a new action (action = start a program, location is Select.exe, argument is "/setup")
- Run the task. A minute or so later (time may vary), you will see the above mentioned errors in the Windows Application Event log

BobRichards
Posts: 1121
Joined: Wed Jan 15, 2014 3:50 pm
Location: Raleigh, NC
Contact:

Re: Select.exe /Setup

Post by BobRichards » Mon Sep 27, 2021 10:43 am

I'm sorry you are having this problem.

Unfortunately due to the magnitude of the issue and the fact it has a large production impact, it is beyond the scope of this forum to provide you answers. Please contact the SoftPro Customer Service folks to get your issue escalated to R&D. I think this is the best way to get this issue in front of the correct set of developers to get the quickest solution.
Bob Richards, Senior Software Developer, SoftPro

Post Reply