[Haskell-cafe] Having trouble with zip12..

Michael Feathers mfeathers at mindspring.com
Sun Jul 6 17:21:39 EDT 2008


Andrew Wagner wrote:
> Wow. Where did you come up with the stack trace? That's...impressive.

Pulled it from a blog.  I was actually looking for a creepy VB4 or VB5 
stack trace I saw years ago that ripped through their dynamic type 
resolution layer. Now that would've been funny. :-)

Michael

> 
> On Sun, Jul 6, 2008 at 5:07 PM, Don Stewart <dons at galois.com> wrote:
>> I win, almost ...
>>
>>    13:13:18 <dons> dolio: yeah, it was ... almost ... an April 1 style post
>>
>> :)
>>
>> And yes, this was truly shocking on a number of levels. However, we have
>> people doing a lot of weird things with Haskell these days, so its not
>> as absurd that someone would be hacking up a zip12 for an air traffic
>> control system on some MS platform, with SQL in the backend, as it might
>> have been a few years ago :)
>>
>> mfeathers:
>>> Sorry guys.  I was just bored on a Sunday afternoon so I thought I'd
>>> type up a little joke.  I thought to myself "Gee, how outrageous can I
>>> make it?"
>>>
>>> 1) Using and debugging a zip12 function.
>>> 2) That fails only on 'take 5' (Brubeck fans take note)
>>> 3) Has some absurd arguments like (nub . nub)
>>> 4) Is embedded in an air traffic control system
>>> 5) Is written in a Microsoft variant of Haskell called H#
>>> 6) Silently makes SQL calls when evaluating a pure function
>>> 7) Yields an mile long stack trace
>>>
>>> Sorry all.  Boredom made me do it,
>>>
>>> Michael
>>>
>>> Paul Visschers wrote:
>>>> You're zipping 12 lists here, so how about testing each list
>>>> individually? This will narrow down the problem considerably.
>>>>
>>>> Michael Feathers wrote:
>>>>> I have some code that looks like this and I'm having trouble with it:
>>>>>
>>>>>
>>>>> zip12 ((tails . nub) flightPaths) wayPoints etopsPackets (hd geoCaches)
>>>>>  groundSpeeds headings (map windShift headings) (regulations !! 2)
>>>>>  (foldr (\|/) (tail pathDistances)) [ghy x | x <- [1..], full x]
>>>>>  (nub . nub) arrivalSchedule
>>>>>
>>>>>
>>>>> The domain is air traffic control and I need to generate 12-tuples for
>>>>> aircraft that are within a particular radius of the tower.
>>>>>
>>>>> When I evaluate that expression with 'take 4' it works fine.  When I
>>>>> evaluate it with 'take 6' it works as well.  But, when I evaluate it
>>>>> with 'take 5' I get the following runtime error from H# in Visual Studio
>>>>> (it runs fine on the command line).  This is particularly odd because
>>>>> I'm not using Sql.
>>>>>
>>>>>
>>>>>
>>>>> The type initializer for 'System.Data.SqlClient.SqlConnection' threw an
>>>>> exception.
>>>>> Exception (TypeInitializationException): Source="System.Data";
>>>>> Target=null; Tag=null; TypeName="System.Data.SqlClient.SqlConnection";
>>>>> Message = "The type initializer for
>>>>> 'System.Data.SqlClient.SqlConnection' threw an exception."
>>>>> InnerException (TypeInitializationException): Source="System.Data";
>>>>> Target=null; Tag=null;
>>>>> Message = "The type initializer for
>>>>> 'System.Data.SqlClient.SqlConnectionFactory' threw an exception."
>>>>> StackTrace = " at System.Data.SqlClient.SqlConnection..cctor()"
>>>>> InnerException (TypeInitializationException): Source="System.Data";
>>>>> Target=null; Tag=null;
>>>>> Message = "The type initializer for
>>>>> 'System.Data.SqlClient.SqlPerformanceCounters' threw an exception."
>>>>> StackTrace =
>>>>> " at System.Data.SqlClient.SqlConnectionFactory..ctor()
>>>>> at System.Data.SqlClient.SqlConnectionFactory..cctor()"
>>>>> InnerException (ConfigurationErrorsException):
>>>>> Source="System.Configuration"; Target=null; Tag=null; Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Paey\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> StackTrace =
>>>>> " at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[]
>>>>> keys, SectionInput input, Boolean isTrusted, FactoryRecord
>>>>> factoryRecord, SectionRecord sectionRecord, Object parentResult)
>>>>> at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord
>>>>> factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean
>>>>> getLkg, Boolean getRuntimeObject, Object& result, Object&
>>>>> resultRuntimeObject)
>>>>> at
>>>>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>>>>> configKey, Boolean getLkg, Boolean checkPermission, Boolean
>>>>> getRuntimeObject, Boolean requestIsHere, Object& result, Object&
>>>>> resultRuntimeObject)
>>>>> at
>>>>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>>>>> configKey, Boolean getLkg, Boolean checkPermission, Boolean
>>>>> getRuntimeObject, Boolean requestIsHere, Object& result, Object&
>>>>> resultRuntimeObject)
>>>>> at
>>>>> System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String
>>>>> configKey, Boolean getLkg, Boolean ch... (truncated) ...olean
>>>>> checkPermission)
>>>>> at System.Configuration.BaseConfigurationRecord.GetSection(String
>>>>> configKey)
>>>>> at
>>>>> System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String
>>>>> sectionName)
>>>>> at System.Configuration.ConfigurationManager.GetSection(String
>>>>> sectionName)
>>>>> at System.Configuration.PrivilegedConfigurationManager.GetSection(String
>>>>> sectionName)
>>>>> at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection()
>>>>> at System.Diagnostics.DiagnosticsConfiguration.Initialize()
>>>>> at System.Diagnostics.Switch.InitializeConfigSettings()
>>>>> at System.Diagnostics.Switch.InitializeWithStatus()
>>>>> at System.Diagnostics.Switch.get_SwitchSetting()
>>>>> at System.Diagnostics.TraceSwitch.get_Level()
>>>>> at System.Data.ProviderBase.DbConnectionPoolCounters..ctor(String
>>>>> categoryName, String categoryHelp)
>>>>> at System.Data.SqlClient.SqlPerformanceCounters..ctor()
>>>>> at System.Data.SqlClient.SqlPerformanceCounters..cctor()"
>>>>> BareMessage = "The value of the property 'traceOutputOptions' cannot be
>>>>> parsed. The error is: The enumeration value must be one of the
>>>>> following: None, LogicalOperationStack, DateTime, Timestamp, ProcessId,
>>>>> ThreadId, Callstack."
>>>>> Filename = "C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pey\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config line
>>>>> 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 (ConfigurationErrorsException): Source=null; Target=null; Tag=null;
>>>>> StackTrace=null; BareMessage=(->BareMessage); Filename=(->Filename);
>>>>> Line=21;
>>>>> Message =
>>>>> "The value of the property 'traceOutputOptions' cannot be parsed. The
>>>>> error is: The enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId,
>>>>> Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21)"
>>>>> Errors (ConfigurationException[]): Length=1; Rank=1; Count=1;
>>>>> #0 =
>>>>> {System.Configuration.ConfigurationErrorsException: The value of the
>>>>> property 'traceOutputOptions' cannot be parsed. The error is: The
>>>>> enumeration value must be one of the following: None,
>>>>> LogicalOperationStack, DateTime, Timestamp, ProcessId,
>>>>> ThreadId, Callstack. (C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\bin\Debug\RPMC.vshost.exe.config
>>>>> line 21) ---> UJ.ExceptionManagement.Classes.EmsInnerException: (This is
>>>>> EmsInnerException helper object)
>>>>> --- End of inner exception stack trace ---}
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> Values = System.Configuration.ConfigurationException[]
>>>>> TypeName = "System.Data.SqlClient.SqlPerformanceCounters"
>>>>> TypeName = "System.Data.SqlClient.SqlConnectionFactory"
>>>>> Environment: ThreadIdentity="" DateTime=["2008-06-27 13:02:08.709"]
>>>>> ThreadName=null WindowsIdentity="STRUSS\Pley" ThreadId="10"
>>>>> DomainName="RPMC.vshost.exe" OSVersion=["Microsoft Windows NT 5.1.2600
>>>>> Service Pack 3"] MachineName="1LPPley"
>>>>> UserName="Pley"
>>>>> Remaining Stack Trace - - - - - - - - - - - - - - - - - - - - - - - - -
>>>>> - - - - - - - - - - - - - - - - - - - - - -
>>>>> at System.Data.SqlClient.SqlConnection..ctor()
>>>>> at System.Data.SqlClient.SqlConnection..ctor(String connectionString)
>>>>> at MicroFour.StrataFrame.Data.SqlDataSourceItem.CreateBlankDbConnection()
>>>>> at MicroFour.StrataFrame.Data.DbDataSourceItem.GetDataTable(DbCommand
>>>>> Command, OnChangeEventHandler CallBack)
>>>>> at MicroFour.StrataFrame.Data.SqlDataSourceItem.GetDataTable(DbCommand
>>>>> Command, OnChangeEventHandler CallBack)
>>>>> at MicroFour.StrataFrame.Data.DataLayer.GetDataTable(DbCommand Command,
>>>>> Boolean RegisterNotification)
>>>>> at MicroFour.StrataFrame.Business.BusinessLayer.FillDataTable(DbCommand
>>>>> CommandToExecute)
>>>>> at
>>>>> MicroFour.StrataFrame.Security.BusinessObjects.SFSUsersBO.FillByUserName(String
>>>>> UserName)
>>>>> at MicroFour.StrataFrame.Security.Login.AuthenticateUser(String
>>>>> Username, String Password, String Domain, SFSUsersBO& User)
>>>>> at MicroFour.StrataFrame.Security.Login.AttemptLogin(Object sender,
>>>>> EventArgs e)
>>>>> at RPMC.LoginForm.OnAttemptLogin() in C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\Forms\LoginForm.vb:line 30
>>>>> at RPMC.LoginForm.cmdOk_Click(Object sender, EventArgs e) in
>>>>> C:\Documents and
>>>>> Settings\Pley\Desktop\Projects\RPMC\Forms\LoginForm.vb:line 285
>>>>> at System.Windows.Forms.Control.OnClick(EventArgs e)
>>>>> at System.Windows.Forms.Button.OnClick(EventArgs e)
>>>>> at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
>>>>> at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
>>>>> button, Int32 clicks)
>>>>> at System.Windows.Forms.Control.WndProc(Message& m)
>>>>> at System.Windows.Forms.ButtonBase.WndProc(Message& m)
>>>>> at System.Windows.Forms.Button.WndProc(Message& m)
>>>>> at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)
>>>>> at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)
>>>>> at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg,
>>>>> IntPtr wparam, IntPtr lparam)
>>>>> Comments:
>>>>> EMS warning: maximum number of iterations reached when processing objects.
>>>>> _______________________________________________
>>>>> Haskell-Cafe mailing list
>>>>> Haskell-Cafe at haskell.org
>>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>>
>>>> _______________________________________________
>>>> Haskell-Cafe mailing list
>>>> Haskell-Cafe at haskell.org
>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>>
>>>
>>> --
>>> Now Playing: Clammbon - 246
>>> http://youtube.com/watch?v=PO77bN8W1mA
>>>
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
> 


-- 
Now Playing: Clammbon - 246
http://youtube.com/watch?v=PO77bN8W1mA




More information about the Haskell-Cafe mailing list