Jump to content

VS2010 + Plastic 4.1 VS Integration -> sporadic IDE hangs


Olaf Kober

Recommended Posts

My solution size varies based on the branch I'm working on; but just based on my memory I would venture to say that it does happen more often on the branches with many projects / files. The "internal beta" branch has 12 projects and it seems like most often when I get the hang that's where I get it. I haven't seen it since 4.1.10.284, but I've been working on a small branch with only 4 projects.

Link to comment
Share on other sites

In the previous research of the issue we concluded that it was a thread lock during the checkout operation, carried out at the ctrl + s action, it was provoked when visual studio was having multiple Plastic SCM views opened but it was also reproducible without them.

Tomorrow I'll speak with Daniel to refix this issue.

Link to comment
Share on other sites

Hey, I think I have detected other potential piece of code that could be causing the issue. Someone volunteers to test the patched dll and verify that the problem is solved?

I prefer to do that before publish the fix in a new public release, to ensure that is really fixed.

Thanks in advance.

Link to comment
Share on other sites

Attached to this post there is a DLL that should fix the "sporadic IDE hangs" issue. The DLL is compatible ONLY with 4.1.10.285 version.

In order to change the DLL, follow these steps:

1.- Close VS

2.- Go to the PlasticSCM client installation directory (tipically c:\Program Files\PlasticSCM\client)

2.- Backup the current DLL file libplasticbridge.dll -> libPlasticBridge.dll.old

3.- Copy the client DLL (libPlasticBridge.dll) into the client directory

Please, let me know if this DLL fixes the issue. Thanks for your time.

libPlasticBridge.zip

Daniel

Link to comment
Share on other sites

No, sorry, the libPlasticBridge.dll version I uploaded was wrong, it was for v4.1.10.285, that is not public yet. So, I will redo the fix for Plastic v4.1.10.284

Are you able to restore the previous version of the DLL?

Link to comment
Share on other sites

Ok, here is a DLL for the v4.1.10.284

VSPackage_Patch_4.1.10.248.zip

You also need to unregister the VSPackage dll and register it again:

1.- Close Visual Studio

2.- Unregister the VSPackage dll (open a cmd as administrator and run):

For VS2005: "<plasticclientdir>\tools\regpkg.exe" /unregister "<plasticclientdir>\plasticVSextensibility.dll"
For VS2008: "<plasticclientdir>\tools\regpkg.exe" /root:Software\Microsoft\VisualStudio\9.0 /unregister "<plasticclientdir>\plasticVSextensibility.dll"
For VS2010: "<plasticclientdir>\tools\regpkg.exe" /root:Software\Microsoft\VisualStudio\10.0 /unregister "<plasticclientdir>\plasticVSextensibility.dll"

3.- Backup the following client files: plasticVSextensibility.dll and libPlasticBridge.dll

4.- Copy the attached files to the client directory

5.- Register the VSPackage dll (open a cmd as administrator and run):

For VS2005: "<plasticclientdir>\tools\regpkg.exe" /codebase "<plasticlientdir>\plasticVSextensibility.dll"
For VS2008: "<plasticclientdir>\regpkg.exe" /root:Software\Microsoft\VisualStudio\9.0 /codebase "<plasticlientdir>\plasticVSextensibility.dll"
For VS2010: "<plasticclientdir>\regpkg.exe" /root:Software\Microsoft\VisualStudio\10.0 /codebase "<plasticlientdir>\plasticVSextensibility.dll"

Best regards,

Daniel

Link to comment
Share on other sites

Thanks, Daniel!

I tried your patch on two different machines, but it does not fix the VS hangs. It is strange. I'm able to reproduce the behavior 100% of the time. I thought it has something to do with our solution/projects and tried out another project (Microsoft All-In-One Code Framework) and was still able to lock VS.

Here is a detailed list of steps I did. Maybe this helps to reproduce it on your site.

One important note, as mentioned in my first post, when using 4.0.239.24 the bug does not happen, only after upgrading/installing 4.1.10.267 or later. There is something broken in between 4.0 and 4.1.

Preparation:

  1. I did my testing in a clean virtual machine: Win 7 x64 SP1, German, VS2010 + SP1 English (no CodeRush, Resharper)
  2. Install Plastic SCM 4.0.239.24 with default settings (client, server, vs integration, local users, sql ce database)
  3. Open Plastic client
  4. Create a new workspace Test (c:\test) in a new repository Test
  5. Download the Microsoft All-In-One Code Framework source code from http://1code.codeplex.com/SourceControl/list/changesets (on the right side: latest version, download)
  6. Extract source code into c:\test
  7. Add all files to Plastic; this will check-in about 185 MB
  8. Navigate to c:\test\Visual Studio 2010; open solution CSWPFListBoxValidation.sln
  9. Bind solution to Plastic SCM source control provider; commit changes

Steps to verify that 4.0.239.24 does work:

  1. Open solution CSWPFListBoxValidation.sln
  2. VS2010 Menu > View > Plastic SCM > Pending changes on Workspace
  3. Solution Explorer: open app.xaml
  4. Goto XAML view
  5. Add some empty lines above <Application>...
  6. Hit Ctrl + S
  7. You should be able to move the caret around; no VS hanging
  8. Undo all changes

Steps to reproduce the bug:

  1. Close everything
  2. Upgrade Plastic SCM to 4.1.10.267 (or later, but this is the first version I have that has the bug)
  3. Open solution CSWPFListBoxValidation.sln from c:\test\Visual Studio 2010
  4. VS2010 Menu > View > Plastic SCM > Pending changes on Workspace
  5. Solution Explorer: open app.xaml (ensure that this file has a blue lock symbol; neither changed or checked-out)
  6. Goto XAML view
  7. Add some empty lines above <Application>...
  8. Hit Ctrl + S
  9. Now, I can't move the caret and VS shows "not responding" after a few seconds

Hopefully you will be able to reproduce this.

Kind regards,

Olaf

Link to comment
Share on other sites

Hi, Olaf, thank you very much for the detailed example, I finally was able to reproduce and fix the problem.

Ok, here is a DLL for the v4.1.10.284 version that fixes the problem:

VSPackage_patch_II_4.1.10.284.zip

You need to unregister the VSPackage dll and register it again:

1.- Close Visual Studio

2.- Unregister the VSPackage dll (open a cmd as administrator and run):

For VS2005: "<plasticclientdir>\tools\regpkg.exe" /unregister "<plasticclientdir>\plasticVSextensibility.dll"
For VS2008: "<plasticclientdir>\tools\regpkg.exe" /root:Software\Microsoft\VisualStudio\9.0 /unregister "<plasticclientdir>\plasticVSextensibility.dll"
For VS2010: "<plasticclientdir>\tools\regpkg.exe" /root:Software\Microsoft\VisualStudio\10.0 /unregister "<plasticclientdir>\plasticVSextensibility.dll"

3.- Backup the following client files: plasticVSextensibility.dll and libPlasticBridge.dll

4.- Copy the attached files to the client directory

5.- Register the VSPackage dll (open a cmd as administrator and run):

For VS2005: "<plasticclientdir>\tools\regpkg.exe" /codebase "<plasticlientdir>\plasticVSextensibility.dll"
For VS2008: "<plasticclientdir>\regpkg.exe" /root:Software\Microsoft\VisualStudio\9.0 /codebase "<plasticlientdir>\plasticVSextensibility.dll"
For VS2010: "<plasticclientdir>\regpkg.exe" /root:Software\Microsoft\VisualStudio\10.0 /codebase "<plasticlientdir>\plasticVSextensibility.dll"

Please, let me know if the patch fixes the problem. In that case, we will include the fix in the next public Plastic SCM release. Thank you again. Best regards,

Daniel

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...