Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System.Exception on FSharpDeclarationListItem.DescriptionText call #734

Closed
jindraivanek opened this issue Mar 27, 2017 · 1 comment
Closed

Comments

@jindraivanek
Copy link
Contributor

jindraivanek commented Mar 27, 2017

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>[email protected] () [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>[email protected] () [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)
@jindraivanek
Copy link
Contributor Author

Tested on Windows machine (Windows 7, VS2017), same result.

With fix, I'm getting this assert:

image

@dsyme dsyme closed this as completed in 1ee6af6 Mar 28, 2017
dsyme added a commit to dsyme/FSharp.Compiler.Service that referenced this issue Apr 29, 2017
integrate visualfsharp master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants