In my case, it was an issue with my system templates. Due to some unknown mess-up, none of the /system templates (including the Forms template) had an English version. This threw exceptions when building a query:
at Sitecore.ContentSearch.Utilities.LanguageFallbackDataService.EnsureFallbackVersion(Item rootItem)
at Sitecore.ContentSearch.Utilities.LanguageFallbackDataService.GetDescendantsByTemplateWithFallback(Item rootItem, TemplateID templateId)
at Sitecore.ContentSearch.Utilities.LanguageFallbackDataService.GetDescendantsByTemplateWithFallback(Item rootItem, String templateId)
at Sitecore.ContentSearch.Utilities.QueryBuilder.CreateQuery[T](IProviderSearchContext context, IEnumerable`1 searchStringModel, Item startLocationItem, IEnumerable`1 additionalContexts)
at Sitecore.ContentSearch.Utilities.QueryBuilder.CreateQuery[T](IProviderSearchContext context, IEnumerable`1 searchStringModel)
at Sitecore.ItemWebApi.Pipelines.Search.ParseSearchText.Parse(IProviderSearchContext providerSearchContext, String searchText)
at Sitecore.ItemWebApi.Pipelines.Search.ParseSearchText.Process(SearchArgs args)
at (Object , Object )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Sitecore.ItemWebApi.Pipelines.Request.Search.RunSearchPipeline(RequestArgs args, String searchText, String languageName, Boolean showHiddenItems)
at Sitecore.ItemWebApi.Pipelines.Request.Search.Process(RequestArgs args)
Other than this, I've also noticed that I don't see any forms when I've previously set the database to 'core' in the content editor.