Symbol server setup problems

Hi guys.

I'm trying to setup symbol server. While building project I see following error messages in the build log:
Failed to find Source Server tools home directory.
Symbols weren’t found in artifacts to be published.
But But if I click ‘Artifacts’ tab I can find ‘.pdb’ file there. And when I’m trying to attach to a process I’m prompted to enter credentials. After entering and pressing ‘Enter’ I’m prompted to enter credentials again and again.
Could someone tell me what I'm doing wrong?

Thanks in advance.

18 comments
Comment actions Permalink

Ivan, as described on plugin page Debugging tools for Windows must be installed on build agent(s) to make the plugin work.
Please make sure it is correct.
In all cases, message in build log is really confusing. Please feel free to watch / vote / comment this issue.

0
Comment actions Permalink

Evgeniy, thanks for answering. Debugging tools are installed and all PDB files published as build artifacts of the build configuration. But errors appears in the build log. And while trying to debug I'm prompted to enter domain credentials but my credentials are not recognized.

0
Comment actions Permalink

Ok, i get it. So please watch fo changes in this issue. I plan to fix it in the nearest future.

0
Comment actions Permalink

Evgeniy, thank you for spared time. I'll add some more details to the issue.

0
Comment actions Permalink

Hi Evgeniy, what is the status of this bug? I'm encountering the same error ("Failed to find Source Server tools home directory. No symbol and source indexing will be performed."), yet have indexing turned on, pdbs in my artifacts, and Debugging Tools for Windows 7.1 and 8 installed on the agents (tried both but neither are found).

Were you able to reproduce this? Is there any work around to get me going? Thanks!

0
Comment actions Permalink

I should add that this is with TeamCity 8.1 and the agent OS is Windows 2008 RC2

0
Comment actions Permalink

Found a workaround:

The plugin seems to be hardcoded to look for this path "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\srcsrv". I wasn't able to find Debugging Tools for Windows 8.0 on msdn, only 8.1. After installing 8.1, which also creates a 8.0 folder, without the Debuggers folder though, I copied the 8.1\Debuggers folder into 8.0.

It would be nice if you:
- auto detect the path of the debugging tools
- or, add a config parameter to let us set this
- and, provide details of where you looked for the tools if they were not found to allow people to figure out what is going on

Side question:
- Why are the debugging tools needed on each agent, why not just on the build server?

0
Comment actions Permalink

Some additional problems with getting the symbol server setup.

1. If I use the url given by the Symbol Server plugin in Visual Studios I get the following error in the teamcity-winservice.log:

[2014-02-24 12:04:13,623]  ERROR -   jetbrains.buildServer.SERVER - Error java.lang.StringIndexOutOfBoundsException: String index out of range: -2 while processing request: GET '/app/symbols//index2.txt', from client 10.31.16.103:60323, user-agent Microsoft-Symbol-Server/6.2.9200.16384, authenticated as 'lakea' (Aaron Lake) {id=1}
[2014-02-24 12:04:13,685] stdout                            [Info] java.lang.StringIndexOutOfBoundsException: String index out of range: -2
[2014-02-24 12:04:13,685] stdout                            [Info]  at java.lang.String.substring(String.java:1911)
[2014-02-24 12:04:13,685] stdout                            [Info]  at jetbrains.buildServer.symbols.DownloadSymbolsController.doHandle(DownloadSymbolsController.java:88)
[2014-02-24 12:04:13,685] stdout                            [Info]  at jetbrains.buildServer.controllers.BaseController.handleRequestInternal(BaseController.java:74)
[2014-02-24 12:04:13,685] stdout                            [Info]  at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
[2014-02-24 12:04:13,685] stdout                            [Info]  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
...

The problem is that the plugin says to use "http://<server>/app/symbols/", but the trailing slash causes problems. Using "http://<server>/app/symbols" gets around this, but a fix would be great.

2. I now get the following error when Visual Studios requests a symbol:

[Info] [2014-02-24 12:05:44,498]  ERROR -   jetbrains.buildServer.SERVER - Error java.lang.NoSuchMethodError: jetbrains.buildServer.controllers.interceptors.auth.HttpAuthenticationManager.processAuthenticationRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Ljetbrains/buildServer/controllers/interceptors/auth/HttpAuthenticationResult; while processing request: GET '/app/symbols/MPTest.pdb/200C0C90F65B4C8C8523C7885DB2F8DD3e/MPTest.pdb', from client 10.31.16.103:60379, user-agent Microsoft-Symbol-Server/6.2.9200.16384, authenticated as 'lakea' (Aaron Lake) {id=1}
[2014-02-24 12:05:44,561] stdout                            [Info] java.lang.NoSuchMethodError: jetbrains.buildServer.controllers.interceptors.auth.HttpAuthenticationManager.processAuthenticationRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Ljetbrains/buildServer/controllers/interceptors/auth/HttpAuthenticationResult;
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.symbols.AuthHelper.getAuthenticatedUser(AuthHelper.java:42)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.symbols.DownloadSymbolsController.doHandle(DownloadSymbolsController.java:98)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.controllers.BaseController.handleRequestInternal(BaseController.java:74)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
[2014-02-24 12:05:44,561] stdout                            [Info]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
[2014-02-24 12:05:44,561] stdout                            [Info]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.maintenance.TeamCityDispatcherServlet.service(TeamCityDispatcherServlet.java:11)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.web.ParametersProviderCalculationContextFilter.doFilter(ParametersProviderCalculationContextFilter.java:5)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.web.DisableSessionIdFromUrlFilter.doFilter(DisableSessionIdFromUrlFilter.java:3)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
[2014-02-24 12:05:44,561] stdout                            [Info]  at jetbrains.buildServer.web.DiagnosticFilter.doFilter(DiagnosticFilter.java:7)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
[2014-02-24 12:05:44,561] stdout                            [Info]  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1686)
[2014-02-24 12:05:44,561] stdout                            [Info]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[2014-02-24 12:05:44,561] stdout                            [Info]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[2014-02-24 12:05:44,561] stdout                            [Info]  at java.lang.Thread.run(Thread.java:744)

Seems to be a problem while processing the authorization. I'm looking into this now, but curious if anyone else has had similar problems...

0
Comment actions Permalink

Hello, Aaron
First of all thank a lot for your feedback and detailed description of occured problems! Also I want to apologise for the huge delay in reply. TC 8.1 just went out so we have tons of feedback to process.
As for your questions:
- plugin tries to locate all WinSDK's installed on the agent and search for two directories "\Debuggers\(x64|x86)\srcsrv\" under located SDK home dir.
- plugin logs all the nessessary details of this process under debug logging level. To get all those details please enable debug logging on the agent.
You can take a look at the implementation if needed.

By the way, seems you've faced with known problem clearly described in this issue comment.

And the most interesting question - Why are the debugging tools needed on each agent, why not just on the build server?

The reason is that we patch content of pdb files on the agent in order to enable source server features. Particulary we use pdbstr.exe and srctool.exe.
We don't want to add aditional requirements to the machine where TC server is running. It still can run on Linux. Also we don't want to re-implement interaction with pdb files in java.

Feel free to ask any additional questions you have!

0
Comment actions Permalink

Aaron,
I'll fix java.lang.StringIndexOutOfBoundsException. Thank for details. as for second problem, Symbol Server plugin is not compatible with TC 8.1 yet. For sure I'll fix this one as well.

0
Comment actions Permalink

Thank you for your replies! It makes sense to me now why you require these tools to be installed on the agents. I forgot about the fact that the server can be running linux. :)

0
Comment actions Permalink

Awesome, thank you! Can you give a rough estimate on a fix for this and when we would most likely see it? ie: a week, a month, etc
I'm just considering whether I should setup manual steps to move the pdbs into the symbol store and index source, or if i can wait until this fix is ready. (I've actually already added steps for storing the pdbs in a separate store, but i currently have the agents setup to copy files from the server and not sync vc directly, so i can't index the source without changing that)
Thanks!

0
Comment actions Permalink

I've fixed url processing. And I'm working on TC 8.1 support at the moment. I'm expecting to finish in a day or two.

0
Comment actions Permalink

Thank you for the update!

0
Comment actions Permalink

hey,

I was wondering if there is a fix for this problem?
because I get the exact same error with my server (the NoSuchMethodError exception).
I'm running TC 8.1.3 on a Windows 7 x64 machine.
The indexing is going correctly but when VS12 askes for symbols I get the above NoSuchMethodError Exception, the same as Aaron Lake got.

0
Comment actions Permalink

I'm using teamcity 9.0.3 and this bug still exists


0
Comment actions Permalink

What plugin version do you use?

0
Comment actions Permalink

After installing all WDK and SDK on Windows 2008r2 it wasn't working. I tried restarting the service but it still gave the error that it couldn't find the development tools in the path. I finally restarted the box to see if that would force windows to reload the path and sure enough that fixed my issue.

0

Please sign in to leave a comment.