History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: RSRP-29337
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Normal Normal
Assignee: Andrey Simanovsky
Reporter: Vladimir Reshetnikov
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
ReSharper

Extract class from parameters. Write lock should be acquired.

Created: 04 Oct 06 17:51   Updated: 24 Oct 06 18:12
Component/s: None
Fix Version/s: 2.0.2
Security Level: Everybody (All jira users)

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
File Attachments: 1. File RaceCondition.rar (5 kb)

Image Attachments:

1. context.gif
(36 kb)

2. exception.gif
(41 kb)

Build: 263
Fixed in build: 264


 Description  « Hide
class Stuff
{
    static void Foo<T, U>(T t, U u)
    {
    }
}

Extract top-level class TU from parameters of methiod Foo.

JetBrains.ReSharper.Util.InternalErrorException: Write lock should be acquired. See Shell.AcquireWriteLock().
An exception has occurred ---> JetBrains.ReSharper.Util.InternalErrorException: Write lock should be acquired. See Shell.AcquireWriteLock().

at JetBrains.ReSharper.Util.InternalErrorException..ctor(String, Exception) in c:\Agent\work\ReSharper2.0\src\Util\src\InternalErrorException.cs:line 28 column 7
at JetBrains.ReSharper.Util.Logger.Assert(Boolean, String, Object[]) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 130 column 11
at JetBrains.ReSharper.Shell.UIApplicationShell.AssertWriteAccessAllowed() in c:\Agent\work\ReSharper2.0\src\Shell\src\UIApplicationShell.cs:line 689 column 5
at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.AddChildBefore(ITreeNode, ITreeNode) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\ModificationUtil.cs:line 256 column 7
at JetBrains.ReSharper.Psi.CSharp.Impl.CSharpSharedImplUtil.AddTypeParameterOfTypeBefore(ITypeDeclaration, Int16, ITypeParameterOfTypeDeclaration, ITypeParameterOfTypeDeclaration) in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\CSharpSharedImplUtil.cs:line 229 column 9
at JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ClassDeclaration.AddTypeParameterBefore(ITypeParameterOfTypeDeclaration, ITypeParameterOfTypeDeclaration) in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ClassDeclaration.cs:line 356 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.LanguageSpecificUtil.AddTypeParameters(IDeclaration, Hashtable, ArrayList) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\LanguageSpecificUtil.cs:line 374 column 47
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.ManageTypeParameters(Hashtable, ArrayList, IDeclaration) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 255 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.CreateClassDeclaration(IParametersOwner, ParameterInfo[], Hashtable, Hashtable, Hashtable, ArrayList, IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 222 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.Initialize(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 73 column 9
at JetBrains.ReSharper.Refactorings.Util.StagedRefactoringBase.SetCurrentStage(IRefactoringStage, IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Util\StagedRefactoringBase.cs:line 30 column 11
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExtractClassFromParamsRefactoringWorkflow.Execute(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExtractClassFromParamsRefactoringWorkflow.cs:line 94 column 5
at JetBrains.ReSharper.Refactorings.Workflow.RefactoringExecutor.Execute(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 608 column 13
at JetBrains.ReSharper.Shell.Progress.TaskHelper.Run() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 231 column 13
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object)
at System.Threading.ExecutionContext.runTryCode(Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, Object)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext, ContextCallback, Object)
at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ScrollableControl.WndProc(Message&)
at System.Windows.Forms.ContainerControl.WndProc(Message&)
at System.Windows.Forms.Form.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)
at JetBrains.UI.Interop.Win32Declarations.DispatchMessage(MSG&)
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.RunMessageLoop() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 127 column 11
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.ExecuteTask(TaskHelper, String, Boolean, Boolean&) in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 149 column 11
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.ExecuteTask(TaskWithProgress, String, Boolean&) in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 170 column 7
at JetBrains.ReSharper.Refactorings.Workflow.TaskExecutorWrapper.ExecuteTask(TaskWithProgress, String, Boolean&) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 477 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.ExecuteRefactoring(Object[]) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 420 column 9
at JetBrains.ReSharper.Psi.Impl.PsiManagerImpl.PsiManagerImpl.DoTransaction(TransactionHandler, Object[]) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\PsiManager\PsiManagerImpl.cs:line 325 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.TryExecuteRefactoring() in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 270 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.ShowNextPage() in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 165 column 13
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.MyForm_OnContinueClicked(Object, EventArgs) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 93 column 5
at JetBrains.ReSharper.Refactorings.Workflow.RefactoringWizardForm.myContinueButton_Click(Object, EventArgs) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\RefactoringWizardForm.cs:line 470 column 5
at System.Windows.Forms.Control.OnClick(EventArgs)
at System.Windows.Forms.Button.OnClick(EventArgs)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs)
at System.Windows.Forms.Control.WmMouseUp(Message&, MouseButtons, Int32)
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ButtonBase.WndProc(Message&)
at System.Windows.Forms.Button.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)
at EnvDTE80.Debugger2.GetExpression2(String, Boolean, Boolean, Int32)
at Microsoft.VisualStudio.ObjectTestBench.DteeProvider.EvaluateStatement(String, String, String&)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.InvokeMethodAndHandleResult(OtbMethodInvokeForm)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.InvokeMethodInvokeHandlerHelper(OtbDynamicMenuCommand, MethodListFilter, String)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.DynIMethodInFirstInvokeHandler(Object, EventArgs)
at Microsoft.VisualStudio.Shell.OleMenuCommand.Invoke(Object, IntPtr)
at Microsoft.VisualStudio.Shell.OleMenuCommandService.Microsoft.VisualStudio.OLE.Interop.IOleCommandTarget.Exec(Guid&, UInt32, UInt32, IntPtr, IntPtr)
at Microsoft.VisualStudio.Shell.Interop.IOleComponentUIManager.ShowContextMenu(UInt32, Guid&, Int32, POINTS[], IOleCommandTarget)
at Microsoft.VisualStudio.Shell.OleMenuCommandService.ShowContextMenu(CommandID, Int32, Int32)
at Microsoft.VisualStudio.ObjectTestBench.LVarObject.ShowContextMenu(Point)
at Microsoft.VisualStudio.ObjectTestBench.LVarObject.OnMouseClick(MouseEventArgs)
at System.Windows.Forms.Control.WmMouseUp(Message&, MouseButtons, Int32)
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ScrollableControl.WndProc(Message&)
at System.Windows.Forms.ContainerControl.WndProc(Message&)
at System.Windows.Forms.UserControl.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)

at JetBrains.ReSharper.Util.Logger.Assert(Boolean condition, String messageFormat, Object[] args) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 130
— End of inner exception stack trace —

at JetBrains.ReSharper.Util.Logger.LogExceptionEx(Exception, String, Boolean) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 327 column 9
at JetBrains.ReSharper.Util.Logger.LogException(Exception) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 339 column 5
at JetBrains.ReSharper.Util.Logger.Assert(Boolean, String, Object[]) in c:\Agent\work\ReSharper2.0\src\Util\src\Logger.cs:line 134 column 11
at JetBrains.ReSharper.Shell.UIApplicationShell.AssertWriteAccessAllowed() in c:\Agent\work\ReSharper2.0\src\Shell\src\UIApplicationShell.cs:line 689 column 5
at JetBrains.ReSharper.Psi.ExtensionsAPI.Tree.ModificationUtil.AddChildBefore(ITreeNode, ITreeNode) in c:\Agent\work\ReSharper2.0\src\Psi\src\ExtensionsAPI\Tree\ModificationUtil.cs:line 256 column 7
at JetBrains.ReSharper.Psi.CSharp.Impl.CSharpSharedImplUtil.AddTypeParameterOfTypeBefore(ITypeDeclaration, Int16, ITypeParameterOfTypeDeclaration, ITypeParameterOfTypeDeclaration) in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\CSharpSharedImplUtil.cs:line 229 column 9
at JetBrains.ReSharper.Psi.CSharp.Impl.Tree.ClassDeclaration.AddTypeParameterBefore(ITypeParameterOfTypeDeclaration, ITypeParameterOfTypeDeclaration) in c:\Agent\work\ReSharper2.0\src\Psi\src\cSharp\impl\tree\ClassDeclaration.cs:line 356 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.LanguageSpecificUtil.AddTypeParameters(IDeclaration, Hashtable, ArrayList) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\LanguageSpecificUtil.cs:line 374 column 47
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.ManageTypeParameters(Hashtable, ArrayList, IDeclaration) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 255 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.CreateClassDeclaration(IParametersOwner, ParameterInfo[], Hashtable, Hashtable, Hashtable, ArrayList, IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 222 column 7
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExecutedStage.Initialize(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExecutedStage.cs:line 73 column 9
at JetBrains.ReSharper.Refactorings.Util.StagedRefactoringBase.SetCurrentStage(IRefactoringStage, IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Util\StagedRefactoringBase.cs:line 30 column 11
at JetBrains.ReSharper.Refactorings.ExtractClassFromParams.ExtractClassFromParamsRefactoringWorkflow.Execute(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\ExtractClassFromParams\ExtractClassFromParamsRefactoringWorkflow.cs:line 94 column 5
at JetBrains.ReSharper.Refactorings.Workflow.RefactoringExecutor.Execute(IProgressIndicator) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 608 column 13
at JetBrains.ReSharper.Shell.Progress.TaskHelper.Run() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 231 column 13
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object)
at System.Threading.ExecutionContext.runTryCode(Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, Object)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext, ContextCallback, Object)
at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ScrollableControl.WndProc(Message&)
at System.Windows.Forms.ContainerControl.WndProc(Message&)
at System.Windows.Forms.Form.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)
at JetBrains.UI.Interop.Win32Declarations.DispatchMessage(MSG&)
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.RunMessageLoop() in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 127 column 11
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.ExecuteTask(TaskHelper, String, Boolean, Boolean&) in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 149 column 11
at JetBrains.ReSharper.Shell.Progress.UITaskExecutor.ExecuteTask(TaskWithProgress, String, Boolean&) in c:\Agent\work\ReSharper2.0\src\Shell\src\Progress\UITaskExecutor.cs:line 170 column 7
at JetBrains.ReSharper.Refactorings.Workflow.TaskExecutorWrapper.ExecuteTask(TaskWithProgress, String, Boolean&) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 477 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.ExecuteRefactoring(Object[]) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 420 column 9
at JetBrains.ReSharper.Psi.Impl.PsiManagerImpl.PsiManagerImpl.DoTransaction(TransactionHandler, Object[]) in c:\Agent\work\ReSharper2.0\src\Psi\src\impl\PsiManager\PsiManagerImpl.cs:line 325 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.TryExecuteRefactoring() in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 270 column 9
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.ShowNextPage() in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 165 column 13
at JetBrains.ReSharper.Refactorings.Workflow.WorkflowProcessor.MyForm_OnContinueClicked(Object, EventArgs) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\WorkflowProcessor.cs:line 93 column 5
at JetBrains.ReSharper.Refactorings.Workflow.RefactoringWizardForm.myContinueButton_Click(Object, EventArgs) in c:\Agent\work\ReSharper2.0\src\Refactorings\src\Workflow\RefactoringWizardForm.cs:line 470 column 5
at System.Windows.Forms.Control.OnClick(EventArgs)
at System.Windows.Forms.Button.OnClick(EventArgs)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs)
at System.Windows.Forms.Control.WmMouseUp(Message&, MouseButtons, Int32)
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ButtonBase.WndProc(Message&)
at System.Windows.Forms.Button.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)
at EnvDTE80.Debugger2.GetExpression2(String, Boolean, Boolean, Int32)
at Microsoft.VisualStudio.ObjectTestBench.DteeProvider.EvaluateStatement(String, String, String&)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.InvokeMethodAndHandleResult(OtbMethodInvokeForm)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.InvokeMethodInvokeHandlerHelper(OtbDynamicMenuCommand, MethodListFilter, String)
at Microsoft.VisualStudio.ObjectTestBench.OtbCommandHandlers.DynIMethodInFirstInvokeHandler(Object, EventArgs)
at Microsoft.VisualStudio.Shell.OleMenuCommand.Invoke(Object, IntPtr)
at Microsoft.VisualStudio.Shell.OleMenuCommandService.Microsoft.VisualStudio.OLE.Interop.IOleCommandTarget.Exec(Guid&, UInt32, UInt32, IntPtr, IntPtr)
at Microsoft.VisualStudio.Shell.Interop.IOleComponentUIManager.ShowContextMenu(UInt32, Guid&, Int32, POINTS[], IOleCommandTarget)
at Microsoft.VisualStudio.Shell.OleMenuCommandService.ShowContextMenu(CommandID, Int32, Int32)
at Microsoft.VisualStudio.ObjectTestBench.LVarObject.ShowContextMenu(Point)
at Microsoft.VisualStudio.ObjectTestBench.LVarObject.OnMouseClick(MouseEventArgs)
at System.Windows.Forms.Control.WmMouseUp(Message&, MouseButtons, Int32)
at System.Windows.Forms.Control.WndProc(Message&)
at System.Windows.Forms.ScrollableControl.WndProc(Message&)
at System.Windows.Forms.ContainerControl.WndProc(Message&)
at System.Windows.Forms.UserControl.WndProc(Message&)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message&)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message&)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)



 All   Comments   Work Log   Change History      Sort Order:
Vladimir Reshetnikov - 06 Oct 06 09:43
It is easy to reproduce.
1) Open attached solution.
2) Go to file "Stuff.cs".
3) Put the caret onto "Foo" identifier, right-click to open context menu and click item "Extarct Class from Parameters" (See attachment "context.gif")
4) Select options "Class", "Top-level", type in a name for extarcted class - "TU", press "Continue". You will get an excepton. (See attachment "exception.gif")

Andrey Simanovsky - 06 Oct 06 13:27
Was fixed in 3.0. Fix was missing in 2.0.