unisonweb / unison

A friendly programming language from the future
https://unison-lang.org
Other
5.73k stars 266 forks source link

Edit docs command for large doc codebase causes UCM crash #2808

Closed rlmark closed 2 years ago

rlmark commented 2 years ago

In order to fix a cycle problem in docs, I'll need to render the doc tree to my code buffer. The mass edit command is failing with the error

CallStack (from HasCallStack):
  error, called at src/Unison/Name.hs:487:9 in unison-core1-0.0.0-HKFBxWMARetDME5kDUZ3R4:Unison.Name
  unsafeFromText, called at src/Unison/HashQualified.hs:34:44 in unison-core1-0.0.0-HKFBxWMARetDME5kDUZ3R4:Unison.HashQualified

The following transcript, will reproduce the error:

editDocs.md

Given the following codebase: pull https://github.com/unisonweb/website:.docs .docs

A zipped copy is here: codebase.zip

ChrisPenner commented 2 years ago

Fixed the main crash in #2812;

It seems a bit strange that we're running into this at all though so I'll continue looking into it. Here's the full stack-trace for my future reference:

Encountered Exception: Empty namespace prefix on: NameOnly Weekdays.Mon
CallStack (from HasCallStack):
  error, called at src/Unison/HashQualified.hs:31:24 in unison-core1-0.0.0-CxBnG93t9ZJ312R0zYxBxL:Unison.HashQualified
CallStack (from -prof):
  Unison.HashQualified.stripNamespace (src/Unison/HashQualified.hs:(31,1)-(38,78))
  Unison.DeclPrinter.prettyPattern (src/Unison/DeclPrinter.hs:(83,1)-(89,38))
  Unison.DeclPrinter.prettyDataDecl.constructor' (src/Unison/DeclPrinter.hs:(105,3)-(113,53))
  Unison.Type.$mForallsNamed'.\ (src/Unison/Type.hs:112:34-63)
  Unison.DeclPrinter.prettyDataDecl.constructor (src/Unison/DeclPrinter.hs:(103,3)-(104,70))
  Unison.DeclPrinter.prettyDataDecl (src/Unison/DeclPrinter.hs:(98,1)-(116,88))
  Unison.DeclPrinter.prettyDecl (src/Unison/DeclPrinter.hs:(46,1)-(48,40))
  Unison.CommandLine.OutputMessages.displayDefinitions.code.go2 (src/Unison/CommandLine/OutputMessages.hs:(1652,9)-(1656,93))
  Unison.CommandLine.OutputMessages.displayDefinitions.code.prettyTypes (src/Unison/CommandLine/OutputMessages.hs:(1641,9)-(1643,67))
  Unison.CommandLine.OutputMessages.displayDefinitions.code (src/Unison/CommandLine/OutputMessages.hs:(1632,5)-(1666,68))
  Unison.CommandLine.OutputMessages.displayDefinitions (src/Unison/CommandLine/OutputMessages.hs:(1595,1)-(1666,68))
  Unison.CommandLine.OutputMessages.notifyUser (src/Unison/CommandLine/OutputMessages.hs:(354,1)-(1453,70))
  Unison.CommandLine.Main.main.notify (src/Unison/CommandLine/Main.hs:(156,9)-(159,37))
  Unison.Codebase.Editor.HandleCommand.commandLine.go (src/Unison/Codebase/Editor/HandleCommand.hs:(105,3)-(230,15))
  Unison.Util.Free.fold (src/Unison/Util/Free.hs:(22,1)-(24,32))
  Unison.Codebase.Editor.HandleCommand.commandLine (src/Unison/Codebase/Editor/HandleCommand.hs:(100,1)-(260,23))
  Unison.CommandLine.Main.main.loop.handleCommand (src/Unison/CommandLine/Main.hs:(187,17)-(197,45))
  Unison.CommandLine.Main.main.loop (src/Unison/CommandLine/Main.hs:(184,11)-(211,31))
  Unison.CommandLine.Main.main (src/Unison/CommandLine/Main.hs:(115,1)-(227,9))
  Main.launch (unison/Main.hs:(310,1)-(330,19))
  Main.main.\.\ (unison/Main.hs:(190,82)-(210,102))
  Control.Concurrent.Async.catchAll (Control/Concurrent/Async.hs:951:1-16)
  Control.Concurrent.Async.concurrently'.\ (Control/Concurrent/Async.hs:(779,24)-(822,16))
  Control.Concurrent.Async.concurrently' (Control/Concurrent/Async.hs:(777,1)-(822,16))
  Control.Concurrent.Async.race (Control/Concurrent/Async.hs:(752,1)-(758,31))
  UnliftIO.Internals.Async.race.\ (src/UnliftIO/Internals/Async.hs:232:34-55)
  Network.Wai.Handler.Warp.WithApplication.withApplicationSettings.\ (Network/Wai/Handler/Warp/WithApplication.hs:(37,36)-(49,25))
  Network.Wai.Handler.Warp.WithApplication.withApplicationSettings (Network/Wai/Handler/Warp/WithApplication.hs:(35,1)-(63,15))
  Unison.Server.CodebaseServer.startServer (src/Unison/Server/CodebaseServer.hs:(243,1)-(267,25))
  Main.main.\ (unison/Main.hs:(188,72)-(210,102))
  Main.getCodebaseOrExit.\ (unison/Main.hs:366:7-19)
  Unison.Codebase.Init.withOpenOrCreateCodebase.\ (src/Unison/Codebase/Init.hs:(91,73)-(92,51))
  UnliftIO.Exception.finally.\.\ (src/UnliftIO/Exception.hs:(403,87)-(412,14))
  UnliftIO.Exception.finally.\ (src/UnliftIO/Exception.hs:(403,45)-(412,14))
  UnliftIO.Exception.finally (src/UnliftIO/Exception.hs:(403,1)-(417,17))
  Unison.Codebase.SqliteCodebase.sqliteCodebase.\.\ (src/Unison/Codebase/SqliteCodebase.hs:(279,24)-(798,53))
  Unison.Codebase.SqliteCodebase.sqliteCodebase.\ (src/Unison/Codebase/SqliteCodebase.hs:(274,43)-(799,22))
  Unison.Codebase.SqliteCodebase.withConnection.\ (src/Unison/Codebase/SqliteCodebase.hs:264:20-27)
  Unison.Codebase.SqliteCodebase.withConnection (src/Unison/Codebase/SqliteCodebase.hs:(260,1)-(264,28))
  Unison.Codebase.SqliteCodebase.sqliteCodebase (src/Unison/Codebase/SqliteCodebase.hs:(272,1)-(799,22))
  Unison.Codebase.SqliteCodebase.withCodebaseOrError.\ (src/Unison/Codebase/SqliteCodebase.hs:171:7-120)
  Unison.Codebase.SqliteCodebase.withCodebaseOrError (src/Unison/Codebase/SqliteCodebase.hs:(167,1)-(171,120))
  Unison.Codebase.SqliteCodebase.init (src/Unison/Codebase/SqliteCodebase.hs:(117,1)-(121,3))
  Unison.Codebase.Init.withOpenCodebase (src/Unison/Codebase/Init.hs:52:5-20)
  Unison.Codebase.Init.withOpenOrCreateCodebase (src/Unison/Codebase/Init.hs:(89,1)-(115,81))
  Main.getCodebaseOrExit (unison/Main.hs:(356,1)-(405,53))
  UnliftIO.Exception.bracket.\.\ (src/UnliftIO/Exception.hs:(345,79)-(360,14))
  UnliftIO.Exception.bracket.\ (src/UnliftIO/Exception.hs:(345,52)-(360,14))
  Control.Monad.IO.Unlift.withRunInIO (src/Control/Monad/IO/Unlift.hs:63:3-30)
  UnliftIO.Exception.bracket (src/UnliftIO/Exception.hs:(345,1)-(366,17))
  Compat.withInterruptHandler (src/Compat.hs:(33,1)-(56,40))
  Main.main (unison/Main.hs:(70,1)-(210,102))