Skip to content

System.Exception on FSharpDeclarationListItem.DescriptionText call #734

@jindraivanek

Description

@jindraivanek

This is continuation of this Ionide issue.

FCS crashes on DescriptionText call on completion results on FileSystem provider.

Repro steps

I made a repro script:

  1. clone https://github.com/jindraivanek/FCS-repro-TP-completion

  2. run init.sh or init.cmd

  3. run fsharpi completion.fsx

Expected behavior

Don't crash.

In linked repo is patched (by PR #735) FCS dll. By referencing it script works without crash.

Actual behavior

Output on my machine (linux):

 - .git
 - .gitignore
 - .paket
 - FSharp.Compiler.Service.dll
 - Path
 - completion.fsx
 - init.sh
 - packages
 - paket.dependencies
 - paket.lock
 - .git - FSharpToolTipText
  [Single
     ("type .git =
  static val HEAD : string
  static val Path : string
  static val config : string
  static val description : string
  nested type branches
  nested type hooks
  nested type info
  nested type objects
  nested type refs",
      Text
        "

A strongly typed interface to '/pub/dev/github/ionide/FCS-bug/.git'")]
System.AggregateException: One or more errors occurred. ---> System.Exception: ILTypeInfo.FromType
  at Microsoft.FSharp.Compiler.Infos+ILTypeInfo.FromType (Microsoft.FSharp.Compiler.TcGlobals+TcGlobals g, Microsoft.FSharp.Compiler.Tast+TType ty) [0x00059] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.metaInfoOfEntityRef (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Tast+EntityRef tcref) [0x0004a] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlDocSigOfILFieldInfo (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Infos+ILFieldInfo finfo) [0x00014] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlDocHelpSigOfItemForLookup (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00112] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlCommentForItemAux (Microsoft.FSharp.Core.FSharpOption`1[T] xmlDoc, Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00059] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlCommentForItem (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x0006f] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.FormatItemDescriptionToToolTipElement (System.Boolean isDecl, Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Tastops+DisplayEnv denv, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00017] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl+FormatStructuredDescriptionOfItem@1195.Invoke (Microsoft.FSharp.Core.Unit unitVar0) [0x00001] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorScope.Protect[a] (Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] f, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] err) [0x00009] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions.ReraiseIfWatsonable (System.Exception exn) [0x00040] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions.ErrorLogger.ErrorRecovery (Microsoft.FSharp.Compiler.ErrorLogger+ErrorLogger x, System.Exception exn, Microsoft.FSharp.Compiler.Range+range m) [0x00087] in <58c02e00ddab8ea7a7450383002ec058>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at Microsoft.FSharp.Control.AsyncBuilderImpl.commit[a] (Microsoft.FSharp.Control.AsyncBuilderImpl+AsyncImplResult`1[T] res) [0x0002d] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.CancellationTokenOps.RunSynchronouslyInCurrentThread[a] (System.Threading.CancellationToken token, Microsoft.FSharp.Control.FSharpAsync`1[T] computation) [0x00029] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.CancellationTokenOps.RunSynchronously[a] (System.Threading.CancellationToken token, Microsoft.FSharp.Control.FSharpAsync`1[T] computation, Microsoft.FSharp.Core.FSharpOption`1[T] timeout) [0x00014] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T] (Microsoft.FSharp.Control.FSharpAsync`1[T] computation, Microsoft.FSharp.Core.FSharpOption`1[T] timeout, Microsoft.FSharp.Core.FSharpOption`1[T] cancellationToken) [0x00071] in <58d2477fdff9fae1a74503837f47d258>:0 
  at <StartupCode$FSharp-Compiler-Service>.$ServiceDeclarations+get_StructuredDescriptionText@1333.Invoke () [0x0000d] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00012] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.Tasks.Task.Execute () [0x00016] in <f712f98eb8e445c8918edaf595bbe465>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout) [0x00000] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.FSharpDeclarationListItem.get_StructuredDescriptionText () [0x00069] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.FSharpDeclarationListItem.get_DescriptionText () [0x00001] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at <StartupCode$FSI_0002>.$FSI_0002.main@ () [0x001b9] in <76f6c439513e49fab7fcb74f9be71cd1>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in <f712f98eb8e445c8918edaf595bbe465>:0 
---> (Inner Exception #0) System.Exception: ILTypeInfo.FromType
  at Microsoft.FSharp.Compiler.Infos+ILTypeInfo.FromType (Microsoft.FSharp.Compiler.TcGlobals+TcGlobals g, Microsoft.FSharp.Compiler.Tast+TType ty) [0x00059] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.metaInfoOfEntityRef (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Tast+EntityRef tcref) [0x0004a] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlDocSigOfILFieldInfo (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Infos+ILFieldInfo finfo) [0x00014] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlDocHelpSigOfItemForLookup (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00112] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlCommentForItemAux (Microsoft.FSharp.Core.FSharpOption`1[T] xmlDoc, Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00059] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.GetXmlCommentForItem (Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x0006f] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl.FormatItemDescriptionToToolTipElement (System.Boolean isDecl, Microsoft.FSharp.Compiler.InfoReader+InfoReader infoReader, Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Compiler.Tastops+DisplayEnv denv, Microsoft.FSharp.Compiler.NameResolution+Item d) [0x00017] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.SourceCodeServices.ItemDescriptionsImpl+FormatStructuredDescriptionOfItem@1195.Invoke (Microsoft.FSharp.Core.Unit unitVar0) [0x00001] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorScope.Protect[a] (Microsoft.FSharp.Compiler.Range+range m, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] f, Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] err) [0x00009] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions.ReraiseIfWatsonable (System.Exception exn) [0x00040] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at Microsoft.FSharp.Compiler.ErrorLogger+ErrorLoggerExtensions.ErrorLogger.ErrorRecovery (Microsoft.FSharp.Compiler.ErrorLogger+ErrorLogger x, System.Exception exn, Microsoft.FSharp.Compiler.Range+range m) [0x00087] in <58c02e00ddab8ea7a7450383002ec058>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at Microsoft.FSharp.Control.AsyncBuilderImpl.commit[a] (Microsoft.FSharp.Control.AsyncBuilderImpl+AsyncImplResult`1[T] res) [0x0002d] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.CancellationTokenOps.RunSynchronouslyInCurrentThread[a] (System.Threading.CancellationToken token, Microsoft.FSharp.Control.FSharpAsync`1[T] computation) [0x00029] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.CancellationTokenOps.RunSynchronously[a] (System.Threading.CancellationToken token, Microsoft.FSharp.Control.FSharpAsync`1[T] computation, Microsoft.FSharp.Core.FSharpOption`1[T] timeout) [0x00014] in <58d2477fdff9fae1a74503837f47d258>:0 
  at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T] (Microsoft.FSharp.Control.FSharpAsync`1[T] computation, Microsoft.FSharp.Core.FSharpOption`1[T] timeout, Microsoft.FSharp.Core.FSharpOption`1[T] cancellationToken) [0x00071] in <58d2477fdff9fae1a74503837f47d258>:0 
  at <StartupCode$FSharp-Compiler-Service>.$ServiceDeclarations+get_StructuredDescriptionText@1333.Invoke () [0x0000d] in <58c02e00ddab8ea7a7450383002ec058>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x00012] in <f712f98eb8e445c8918edaf595bbe465>:0 
  at System.Threading.Tasks.Task.Execute () [0x00016] in <f712f98eb8e445c8918edaf595bbe465>:0 <---

Stopped due to error

Related information

I noticed that crash doesn't happen on type provider items that correspond to directory.

  • Operating system: Linux Mint 18.1
  • Mono JIT compiler version 4.8.0 (Stable 4.8.0.520/8f6d0f6 Wed Mar 15 16:18:35 UTC 2017)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions