none
Getting DLL invalid error while trying to upload PDB in Avicode 5.7

    Question

  • Hi,

    I am trying to upload PDB using the upload wizard. Every time I try to do so, I get error as below

    Invalid DLL error while uploading PDB

    Please note that all the DLLs are GACed and file are in acceptable limit (64kb for DLL and 120kb for PDB). I am able to load the dll in ILDASM. Timestamp on both the files PDB and DLLs are same.

    What am I missing. Please help.

    Friday, March 02, 2012 9:06 AM

Answers

  • Hi,

    The same problem is discussed in this thread:

    http://social.technet.microsoft.com/Forums/en-US/operationsmanageravicode/thread/2ca01b92-e6b3-43ef-9b0d-5529da7613f2

    It seems you are trying to upload FW 4.0 assembly, but SEViewer is run under 2.0 target version.

    I've reproduced the same problem with FW 4.0 assembly. To say more I've tried to upload it not only via SEViewer UI, but using "PdbImport.exe" (C:\Program Files (x86)\AVIcode\Intercept\SEViewer\Utilities) - still without success. And here we see why it hasn't been uploaded:

    Though there is one solution how you can use FW 4.0 PDB files with AVIcode (and actually Alex mentioned it in similar thread). You can place PDB files next to dll being loaded. For example, Windows Forms app is built in TestFW40.exe assembly and is being loaded from \bin\Debug\ folder. To resolve PDB files links you need to place TestFW40.pdb to the same \bin\Debug\ folder. Pay attention to files versions - this is sensitive and should be equal.

    In this case AVIcode will recognize PDB and refer you to line of code:


    Igor Savchenko, VIAcode Consulting LLC (http://www.viacode.com/solutions)


    • Edited by Igor Savchenko Friday, March 02, 2012 11:51 AM
    • Marked as answer by Joyjeet Friday, March 02, 2012 9:29 PM
    Friday, March 02, 2012 10:25 AM
  • Hello Joyjeet,

    I think you may try to use PDBImportUtility in this case (shipped together with SeViewer under "Utilities" folder). Just change PDBImportutility.exe.config to add supported runtime 4.0. After you start exe again it should be able to upload DLL/PDB pairs of .NET 4.0 to SeViewer PDB storage.

    Help and command samples for utility should be available through command line.


    Dmitry Matveev

    • Marked as answer by Joyjeet Friday, March 02, 2012 9:29 PM
    Friday, March 02, 2012 6:40 PM
  • Thank you Igor and Dimitry

    This did the trick. Only thing I did extra was to update the PdbImport.config with the highlighted line as below

    <configuration>
      <startup>
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
        <supportedRuntime version="v1.1.4322"/>
        <supportedRuntime version="v1.0.3705"/>
      </startup>

    • Marked as answer by Joyjeet Friday, March 02, 2012 10:03 PM
    Friday, March 02, 2012 9:37 PM
  • Hello Joyjeet,

    I haven't tried to run it under 4.0, Igor will probably reply to you with some workarounds if any.

    There is aslo slightly another solution to get source code line in the event - place PDB symbols beside monitored assemblies on the application server, e.g. web bin or app folder. In that case APM Agent will send the source code line with the stack information and you will not need to import PDBs on the server side.


    Dmitry Matveev

    • Marked as answer by Joyjeet Saturday, March 03, 2012 2:54 AM
    Friday, March 02, 2012 10:30 PM

All replies

  • Hi,

    The same problem is discussed in this thread:

    http://social.technet.microsoft.com/Forums/en-US/operationsmanageravicode/thread/2ca01b92-e6b3-43ef-9b0d-5529da7613f2

    It seems you are trying to upload FW 4.0 assembly, but SEViewer is run under 2.0 target version.

    I've reproduced the same problem with FW 4.0 assembly. To say more I've tried to upload it not only via SEViewer UI, but using "PdbImport.exe" (C:\Program Files (x86)\AVIcode\Intercept\SEViewer\Utilities) - still without success. And here we see why it hasn't been uploaded:

    Though there is one solution how you can use FW 4.0 PDB files with AVIcode (and actually Alex mentioned it in similar thread). You can place PDB files next to dll being loaded. For example, Windows Forms app is built in TestFW40.exe assembly and is being loaded from \bin\Debug\ folder. To resolve PDB files links you need to place TestFW40.pdb to the same \bin\Debug\ folder. Pay attention to files versions - this is sensitive and should be equal.

    In this case AVIcode will recognize PDB and refer you to line of code:


    Igor Savchenko, VIAcode Consulting LLC (http://www.viacode.com/solutions)


    • Edited by Igor Savchenko Friday, March 02, 2012 11:51 AM
    • Marked as answer by Joyjeet Friday, March 02, 2012 9:29 PM
    Friday, March 02, 2012 10:25 AM
  • This is a great and detailed answer Thank you Igor

    I changes the appPool for intercept to 4.0. This has evolved to a new set of problem. I am getting 500 error. Then I ran aspnet_regiis.exe from 4.0 framework folder. With no luck. I also got error for 404 and message stating ISAP and CGI is not enable. At this point I enabled this from ISAPI and CGI Restriction icon in IIS. Now I am getting error .

    Unsupported.
    Only the .NET Framework versions 1.1 and 2.0 are supported by the current version of the Intercept SE-Viewer.

    Trying to find solution on this. Unless someone has already found some solution for this issue. I will keep you posted.

    Friday, March 02, 2012 4:22 PM
  • Hello Joyjeet,

    I think you may try to use PDBImportUtility in this case (shipped together with SeViewer under "Utilities" folder). Just change PDBImportutility.exe.config to add supported runtime 4.0. After you start exe again it should be able to upload DLL/PDB pairs of .NET 4.0 to SeViewer PDB storage.

    Help and command samples for utility should be available through command line.


    Dmitry Matveev

    • Marked as answer by Joyjeet Friday, March 02, 2012 9:29 PM
    Friday, March 02, 2012 6:40 PM
  • Thank you Igor and Dimitry

    This did the trick. Only thing I did extra was to update the PdbImport.config with the highlighted line as below

    <configuration>
      <startup>
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
        <supportedRuntime version="v1.1.4322"/>
        <supportedRuntime version="v1.0.3705"/>
      </startup>

    • Marked as answer by Joyjeet Friday, March 02, 2012 10:03 PM
    Friday, March 02, 2012 9:37 PM
  • Even though PDBs were installed using command line tool, it still did not recognize it in the SEViwer.

    "There is incorrect version of assembly file in PDB Storage. To upload module(s) and PDB file(s) click here"

    I think we might have to find a way to run SEViewer in FW 4.0 as pointed out by Igor earlier, unless there is a different opinion. Has anyone tried running it in FW 4.0.

    Please advice.

    Friday, March 02, 2012 10:07 PM
  • Hello Joyjeet,

    I haven't tried to run it under 4.0, Igor will probably reply to you with some workarounds if any.

    There is aslo slightly another solution to get source code line in the event - place PDB symbols beside monitored assemblies on the application server, e.g. web bin or app folder. In that case APM Agent will send the source code line with the stack information and you will not need to import PDBs on the server side.


    Dmitry Matveev

    • Marked as answer by Joyjeet Saturday, March 03, 2012 2:54 AM
    Friday, March 02, 2012 10:30 PM
  • Currently all PDBs are GACed. PBDs are next to the assembly from where they are GACed.

    GACed assembly that are instrumented for SE-Intercept

    But I will try to copy the PDB next to the dll in the GACed location folder. Not sure it will help but worth trying.


    • Edited by Joyjeet Saturday, March 03, 2012 12:55 AM
    Friday, March 02, 2012 10:52 PM
  • As an update, after following above suggestion, I copied the PDB file at the GAC location of the assembly. I was able to capture the exact line number. However question still remains open about uploading the right assembly for v4.0 as due to company policy we cannot have the PDBs published on the production server.

    Hence solution run SE-Viewer site in v4.0 appPool still remains open. I hope to get a suitable response as soon as possible untill I find some work arround. This will high help in adoption of Avicode and SCOM

    Saturday, March 03, 2012 2:59 AM
  • Hi Joyjeet and Dmitry,

    I've investigated this a little bit more. Unfortunately updating "PdbImport.exe.config" by adding "supportedRuntime version="v.4.0" as Dmitry proposed doesn’t help much. Well, if you comment all the other supportedRuntime versions specified and add "v.4.0" (thus "PdbImported.exe" will be run under FW 4.0 explicitly), you will be able to upload FW 4.0 files to SEViewer PDB share. But SEViewer still won't be able to load them: 

    Concerning running SEViewer under FW 4.0 I've got the same "Unsupported" prompt when having tried to use "ASP.NET v4.0 Classic" application pool:

    And here we have nothing more to do. In "Authenticate.aspx" page PageLoad method there is a logic checking FW runtime version implemented. If FW runtime version is not 1.1 or 2.0, "Unsupported" prompt will be returned. By design SEViewer 5.7 is not compatible with FW 4.0. To fix this source code rebuild will be required.

    So the only one workaround for our case is to place PDB files next to assemblies being loaded.


    Igor Savchenko, VIAcode Consulting LLC (http://www.viacode.com/solutions)

    Monday, March 05, 2012 2:07 PM
  • Thank you Igor for your research. Looks like since SCOM 2012 is release, this version will never be updated. As per the FAQ page "AVIcode 5.7 will no longer be available as a standalone product from Microsoft’s AVIcode subsidiary after System Center 2012 is released" Probably System Center Advisor would be a better long term solution.
    Monday, March 05, 2012 7:30 PM