Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1066 lines
37 KiB

  1. <%@Language =JScript %>
  2. <%
  3. /**********************************************************************************
  4. Debug Portal - Version 2
  5. PAGE : DBGPortal_ViewBucket.asp
  6. DESCRIPTION : Entry point to the debug portal site.
  7. MODIFICATION HISTORY: 11/13/2001 - Created
  8. ***********************************************************************************/
  9. //Session("Authenticated") = "Yes"
  10. //Source: 0 - Command Line
  11. // 1 - Auto path
  12. // 2 - Cer
  13. // 5 - Manual Upload
  14. // 6 - Debuggerless stress
  15. Response.buffer=false
  16. var CurrentDate = new Date()
  17. var FrameID = new String( Request.Querystring("FrameID") )
  18. if( FrameID.toString() == "undefined" )
  19. FrameID = 0
  20. if ( Session("Authenticated") != "Yes" )
  21. Response.Redirect("privacy/authentication.asp?../DBGPortal_ViewBucket.asp?" + Request.QueryString() )
  22. %>
  23. <!--#INCLUDE FILE='Global_DBUtils.asp'-->
  24. <!--#INCLUDE FILE='Global_ServerUtils.asp'-->
  25. <head>
  26. <link rel="stylesheet" TYPE="text/css" HREF="/main.css">
  27. <link rel="stylesheet" TYPE="text/css" HREF="/CustomStyles.css">
  28. </head>
  29. <body bgcolor='#ffffff' topmargin='0' leftmargin='0' marginheight='0' marginwidth='0' tabindex='0'>
  30. <OBJECT ID="DBGPortal"
  31. CLASSID="CLSID:E6490DF0-2E2D-40F4-A79B-AAC01AE6C999"
  32. CODEBASE="DebugPortal.CAB#version=1,0,0,8" width=0 height=0>
  33. </OBJECT>
  34. <%
  35. if( SiteDown == 1 )
  36. Responsef.Redirect ("dbgportalv2.asp")
  37. var UpdateBugNumber = Request.Form( "UpdateBugNumber" )
  38. var BucketID = new String( Request.QueryString("BucketID") )
  39. var ShowCustomerBuckets = new String( Request( "ShowCustomerBuckets" ) )
  40. var Page = new String( Request("Page") )
  41. var PageSize = new String( Request("PageSize") )
  42. var OpenCustomerData = new String( Request("OpenCustomerData") )
  43. var UserAlias = new String( GetShortUserAlias() )
  44. var iBucket = new String( Request("iBucket") )
  45. if ( Page == "undefined" )
  46. Page="1"
  47. if (PageSize == "undefined" )
  48. PageSize = "1000"
  49. if ( iBucket != "undefined" && BucketID == "undefined" )
  50. var tmpiBucket = iBucket
  51. else
  52. var tmpiBucket = parseInt( BucketID, 10 )
  53. var g_DBConn = GetDBConnection( Application("CRASHDB3") )
  54. //tmpiBucket stores an int representation of the BucketID value
  55. //lets check and see if it might be an ibucket value
  56. if ( (!isNaN( tmpiBucket ) && tmpiBucket != 0) || ( iBucket != "undefined" && BucketID == "undefined" ) )
  57. {
  58. try
  59. {
  60. var Query= "DBGP_GetBucketIDByiBucket " + tmpiBucket
  61. var rsBucketID = g_DBConn.Execute( Query )
  62. if ( !rsBucketID.EOF )
  63. BucketID = new String( rsBucketID("BucketID") )
  64. }
  65. catch( err )
  66. {
  67. ; //Response.Write("Could not get bucket name by iBucket<BR>")
  68. }
  69. }
  70. var URLEBucketID = Server.URLEncode( BucketID )
  71. try
  72. {
  73. var Query = "DBGPortal_GetBucketData '" + BucketID + "'"
  74. var rsBucketData = g_DBConn.Execute( Query )
  75. if ( !rsBucketData.EOF )
  76. {
  77. var iBucket = new String( rsBucketData("iBucket") )
  78. var DriverName = new String( rsBucketData("DriverName") )
  79. var FollowUp = new String( rsBucketData("Followup") )
  80. var Crashes = new String( rsBucketData("CrashCount") )
  81. var SolutionID = new String( rsBucketData("SolutionID"))
  82. var BugID = new String( rsBucketData("BugID") )
  83. var Area = new String( rsBucketData("Area") )
  84. try
  85. {
  86. var PoolCorruption = new String( rsBucketData("PoolCorruption" ) )
  87. } catch ( err )
  88. {
  89. var PoolCorruption = null
  90. }
  91. }
  92. else
  93. {
  94. var iBucket = new String( 0 )
  95. var DriverName = new String( "Not available" )
  96. var FollowUp = new String( "Not available" )
  97. var Crashes = new Number( 0 )
  98. var SolutionID = new String( "Not available" )
  99. var BugID = new String( "Not available" )
  100. var Area = new String( "Not available" )
  101. Response.Write( "<H2><FONT COLOR=red>WARNING: No Bucket Data could be located for this bucket</FONT></H2>" )
  102. Response.Write( "This can be caused by the following reasons: <BR>" )
  103. Response.Write( "<UL><LI>All crashes once assigned to this bucket have been re-triaged to a different bucket.</LI>" )
  104. Response.Write( "<LI>This bucket is no longer used (deprecated).</LI>")
  105. Response.Write( "<LI>An error during replication. If you feel this is an error during replication, please email <A HREF='mailto:pfat?Subject=Deprecated bucket " + BucketID + "'>Product Feedback and Analysis Team</A>" )
  106. Response.Write( "</UL>" )
  107. }
  108. Query = "DBGPortal_GetBucketStatus '" + BucketID + "'"
  109. var rsBucketStatus = g_DBConn.Execute( Query )
  110. if ( !rsBucketStatus.EOF )
  111. {
  112. var BucketStatus = new String( rsBucketStatus( "BiggestComment" ) )
  113. var BucketStatusString = new String( rsBucketStatus("Action") )
  114. var BucketStatusAlias = new String( rsBucketStatus( "CommentBy" ) )
  115. }
  116. else
  117. {
  118. var BucketStatus = 0
  119. var BucketStatusString = "In progress"
  120. }
  121. }
  122. catch ( err )
  123. {
  124. Response.Write("Could not get user buckets:<BR>")
  125. Response.Write( "Query: " + Query + "<BR>" )
  126. Response.Write( "[" + err.number + "] " + err.description )
  127. Response.End
  128. }
  129. var TotalPages = parseInt( Crashes / PageSize ) + 1
  130. %>
  131. <FORM ID=frmUpdBugNumber METHOD=Post ACTION="DBGPortal_AddBugNumber.asp">
  132. <INPUT TYPE=HIDDEN NAME=BucketID VALUE="<%=BucketID %>" >
  133. <INPUT TYPE=HIDDEN NAME=iBucket VALUE="<%=iBucket %>" >
  134. <INPUT TYPE=HIDDEN ID=FrameID NAME=FrameID VALUE="<%=FrameID%>">
  135. <table>
  136. <tr>
  137. <td><p class="clsPTitle"><%=BucketID%></p></td>
  138. <td>
  139. <INPUT TYPE=Button VALUE="Back" onclick="javascript:window.history.back()" STYLE='width:110px'>
  140. <INPUT TYPE=Button VALUE="Refresh" onclick="javascript:window.location.reload()" STYLE='width:110px' id=Button1 name=Button1>
  141. <input type='button' value="Add Bookmark" style='width:110px' onclick="fnBookmark()">
  142. <input type='button' value="Show URL" style='width:110px' onclick="javascript: tbURL.style.display == 'none' ? tbURL.style.display = 'block' : tbURL.style.display = 'none';" >
  143. <input name='tbURL' id='tbURL' type=text readonly style='width:550px;display:none' value="http://<%=Request.ServerVariables("SERVER_NAME")%>/DBGPortal_ViewBucket.asp?<%=Request.QueryString()%>">
  144. <input type='button' value='Copy URL' onclick="clipboardData.setData('Text', tbURL.value )">
  145. </td>
  146. </tr>
  147. </table>
  148. <table id="tblUserBuckets" class="clsTableInfo" border="0" cellpadding="2" cellspacing="1">
  149. <tr>
  150. <td align="left" nowrap class="clsTDInfo">Driver Name</td>
  151. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">iBucket</td>
  152. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">FollowUp</td>
  153. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Crashes</td>
  154. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Response</td>
  155. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Raid data</td>
  156. </tr>
  157. <tr>
  158. <td class='sys-table-cell-bgcolor1'><%=DriverName%></td>
  159. <td class='sys-table-cell-bgcolor1'><%=iBucket%></td>
  160. <td class='sys-table-cell-bgcolor1'><%=FollowUp%></td>
  161. <td class='sys-table-cell-bgcolor1'><%=Crashes%></td>
  162. <td class='sys-table-cell-bgcolor1'>
  163. <%
  164. if ( trim( SolutionID ) == "null" && BucketStatus != "8" )
  165. {
  166. Response.Write("No Response")
  167. }
  168. else
  169. {
  170. if ( BucketStatus == "8" && SolutionID == "null" )
  171. {
  172. Response.Write ("Awaiting Response")
  173. BucketStatusString = "Response Requested"
  174. }
  175. else
  176. Response.Write("<a class='clsALinkNormal' href='#none' onclick=\"window.open('http://oca.microsoft.com/en/Response.asp?SID=" + SolutionID + "')\">ResponseID " + SolutionID + "</a>\n" )
  177. //Response.Write( "ID #" + SolutionID + "&nbsp&nbsp-&nbsp<A HREF='#dummy' Onclick=\"window.open('http://ocatest/SEP_state.asp?SolutionID=" + SolutionID + "')\">View Solution</A>")
  178. }
  179. %>
  180. </td>
  181. <td class='sys-table-cell-bgcolor1'>
  182. <%
  183. if ( BugID == "null" )
  184. Response.Write("None assigned")
  185. else
  186. Response.Write( "RAID <A HREF='#dummy' OnClick=\"window.open('http://liveraid/?ID=" + BugID + "')\">#" + BugID + "</A> Area: " + Area )
  187. %>
  188. </td>
  189. </tr>
  190. </table>
  191. <DIV STYLE="display:none" ID=divUpdateBugNumber CLASS=ContentArea>
  192. <br>
  193. <br>
  194. <table class="clsTableInfo" border="0" cellpadding="0" cellspacing="0" style='border:1px solid #6681d9;'>
  195. <tr>
  196. <td class='clsTDInfo' colspan=2>Link RAID Bug to Bucket</td>
  197. </tr>
  198. <tr>
  199. <td class='clsTDBodyCell2' width='190px'>
  200. <INPUT class='clsResponseInput' TYPE=TextBox VALUE="" NAME=UpdateBugNumber ID=UpdateBugNumber>
  201. </td>
  202. <td class='clsTDBodyCell2' align='left'>
  203. New Bug Number
  204. </td>
  205. </tr>
  206. <tr>
  207. <td class='clsTDBodyCell2' width='190px'>
  208. <SELECT NAME=bugArea ID=bugArea>
  209. <OPTION VALUE="Microsoft">Microsoft</OPTION>
  210. <OPTION VALUE="Third Party">Third Party</OPTION>
  211. </SELECT>
  212. </TD>
  213. <td class='clsTDBodyCell2' align='left'>
  214. Affected Area
  215. </td>
  216. </tr>
  217. <tr>
  218. <td colspan=2 align=left style='padding-left:10px;padding-top:5px'>
  219. <INPUT class='clsButton' TYPE=Button VALUE=Submit OnClick="VerifyNewBugNumber()" >
  220. <INPUT class='clsButton' TYPE=Button VALUE=Cancel OnClick="divUpdateBugNumber.style.display='none';divBody.style.display='block'" >
  221. </td>
  222. </tr>
  223. </table>
  224. </div>
  225. </FORM>
  226. <DIV ID=divCancelSolution NAME=divCancelSolution STYLE="display:none">
  227. <FORM ID=frmCancelSolution NAME=frmCancelSolution ACTION="DBGPortal_AddComment.asp?BucketID=<%=URLEBucketID%>" METHOD=Post>
  228. <INPUT TYPE=HIDDEN ID=Action NAME=Action VALUE="7">
  229. <INPUT TYPE=HIDDEN ID=FrameID NAME=FrameID VALUE="<%=FrameID%>">
  230. <INPUT TYPE=HIDDEN NAME=iBucket VALUE="<%=iBucket %>" >
  231. <table class="clsTableInfo" border="0" cellpadding="0" cellspacing="0" style='border:1px solid #6681d9;'>
  232. <tr>
  233. <td class='clsTDInfo' colspan=3>Cancel Response Request.</td>
  234. </tr>
  235. <TR>
  236. <TD class='clsTDBodyCell2' COLSPAN=2 >
  237. Please enter a short reason why you would like to cancel this response request:
  238. </TD>
  239. </TR>
  240. <TR>
  241. <TD class='clsTDBodyCell2'>
  242. <TEXTAREA ID=Comment NAME=Comment COLS=100 ROWS=10></TEXTAREA>
  243. </TD>
  244. </TR>
  245. <TR>
  246. <TD class='clsTDBodyCell2'>
  247. <INPUT class='clsButton' TYPE=Button VALUE=Submit ID=btnSolution NAME=btnSolution onclick="this.style.visibility='hidden';frmCancelSolution.submit()">
  248. <INPUT class='clsButton' TYPE=Button VALUE=Cancel Onclick="divCancelSolution.style.display='none';divBody.style.display='block'" >
  249. </TD>
  250. </TR>
  251. </TABLE>
  252. </FORM>
  253. </DIV>
  254. <DIV NAME=divCreateBucketInfoRequest ID=divCreateBucketInfoRequest STYLE="display:none">
  255. <FORM NAME='frmCustomerInfo' ACTION="DBGPortal_RequestAdditionalinformation.asp" METHOD=POST>
  256. <INPUT TYPE=Hidden NAME=BucketID VALUE='<%=BucketID%>'>
  257. <INPUT TYPE=Hidden NAME=iBucket VALUE='<%=iBucket%>'>
  258. <INPUT TYPE=Hidden NAME=Alias VALUE='<%=UserAlias%>'>
  259. <INPUT TYPE=HIDDEN ID=FrameID NAME=FrameID VALUE="<%=FrameID%>">
  260. <table class="clsTableInfo" border="0" cellpadding="0" cellspacing="0" style='border:1px solid #6681d9;'>
  261. <tr>
  262. <td class='clsTDInfo' colspan=3>Request additional information</td>
  263. </tr>
  264. <TR>
  265. <TD class='clsTDBodyCell2' COLSPAN=2 >
  266. You can select what kind of information you would like to request from the users that have tracked their crashes.
  267. <HR>
  268. </TD>
  269. </TR>
  270. <TR>
  271. <TD class='clsTDBodyCell' VALIGN=TOP>
  272. <INPUT TYPE=CheckBox ID=chkFullDump NAME=chkFullDump>
  273. Full Dump
  274. <BR>
  275. <INPUT TYPE=CheckBox id=chkKernelDump name=chkKernelDump>
  276. Kernel Dump
  277. <BR>
  278. <INPUT TYPE=CheckBox id=chkReproSteps name=chkReproSteps>
  279. Repro Steps
  280. <BR>
  281. <INPUT TYPE=CheckBox id=chkSpecialPoolTagging name=chkSpecialPoolTagging >
  282. Enable Special Pool Tagging
  283. <BR>
  284. <INPUT TYPE=CheckBox id=chkEnableTrackLock name=chkEnableTrackLock>
  285. Enable TrackLocked Pages
  286. <BR>
  287. </TD>
  288. <TD VALIGN=TOP class='clsTDBodyCell' >
  289. Additional/Specific Information:<br>
  290. <textarea cols='100' rows='6' name='taAdditionalInfo'></textarea>
  291. </td>
  292. </tr>
  293. <tr>
  294. <td align=left >
  295. <input class='clsButton' type='button' value='Submit Request' OnClick="frmCustomerInfo.submit()" >
  296. <input class='clsButton' type='button' value='Cancel Request' OnClick="divCreateBucketInfoRequest.style.display='none';divBody.style.display='block'" >
  297. </td>
  298. </tr>
  299. </table>
  300. </form>
  301. </div>
  302. <!--
  303. BEGIN CREATE SOLUTION BLOCK
  304. -->
  305. <DIV ID=divCreateSolution STYLE="display:none">
  306. <FORM ID=frmCreateSolution NAME=frmCreateSolution ACTION="DBGPortal_AddComment.asp?BucketID=<%=URLEBucketID%>" METHOD=Post>
  307. <INPUT TYPE=HIDDEN ID=Action NAME=Action VALUE="8">
  308. <INPUT TYPE=HIDDEN NAME=iBucket VALUE="<%=iBucket %>" >
  309. <INPUT TYPE=HIDDEN ID=FrameID NAME=FrameID VALUE="<%=FrameID%>">
  310. <table class="clsTableInfo" border="0" cellpadding="0" cellspacing="0" style='border:1px solid #6681d9;'>
  311. <tr>
  312. <td class='clsTDInfo' colspan=3>Request a response for this bucket</td>
  313. </tr>
  314. <tr>
  315. <td class='clsTDBodyCell2'>
  316. <b>Please select a response type for this customer action:</b>
  317. </td>
  318. <td class='clsTDBodyCell2'>
  319. <%
  320. BuildSingleValueDropDown( "DBGPortal_GetSolutionTypes", "None", "SolutionType", "None" )
  321. %>
  322. <td class='clsTDBodyCell2'>
  323. <b>Need to add a new response type?&nbsp</b>Email <a href="mailto:pfat?subject=Need%20New%20Solution%20Type%20added">Product Feedback and Analysis team.</a>
  324. <a href='http://winweb/bluescreen/debug/faq.asp'>Response types explained.</a>
  325. </td>
  326. </tr>
  327. <TR>
  328. <td class='clsTDBodyCell2'>
  329. <b>Please select a delivery mechanism for this cutomer response:</b>
  330. </TD>
  331. <td class='clsTDBodyCell2'>
  332. <%
  333. BuildSingleValueDropDown( "DBGPortal_GetDeliveryTypes", "None", "DeliveryType", "None" )
  334. %>
  335. <td class='clsTDBodyCell2'>
  336. <b>Need to add a new delivery type?&nbsp</b>Email <a href="mailto:pfat?subject=Need%20New%20Solution%20Type%20added">Product Feedback and Analysis team.</a>
  337. <a href='http://winweb/bluescreen/debug/faq.asp'>Delivery types explained.</a>
  338. </td>
  339. </tr>
  340. <tr>
  341. <td class='clsTDBodyCell2' colspan='3'>
  342. <b>Please try and complete as much information as possible.</b>
  343. </td>
  344. </tr>
  345. <tr>
  346. <td class='clsTDBodyCell2'>
  347. <INPUT class='clsResponseInput' TYPE=TextBox NAME=tbCompany VALUE='Unknown' OnFocus="javascript:if(String(this.value)=='Unknown') this.value='';">
  348. </td>
  349. <td class='clsTDBodyCell2' colspan='2'>
  350. Company responsible for this crash
  351. </td>
  352. </tr>
  353. <tr>
  354. <td class='clsTDBodyCell2'>
  355. <INPUT class='clsResponseInput' TYPE=TextBox NAME=tbModule VALUE=Unknown OnFocus="javascript:if(String(this.value)=='Unknown') this.value='';">
  356. </td>
  357. <td class='clsTDBodyCell2' colspan='2'>
  358. Module which caused the crash
  359. </td>
  360. </tr>
  361. <tr>
  362. <td class='clsTDBodyCell2'>
  363. <INPUT class='clsResponseInput' TYPE=TextBox NAME=tbProduct VALUE=Unknown OnFocus="javascript:if(String(this.value)=='Unknown') this.value='';">
  364. </TD>
  365. <td class='clsTDBodyCell2' colspan='2'>
  366. Product responsible
  367. </td>
  368. </TR>
  369. <tr>
  370. <td class='clsTDBodyCell2'>
  371. <SELECT NAME=optSP>
  372. <OPTION VALUE="NA">N/A</OPTION>
  373. <OPTION VALUE="SP1">SP1</OPTION>
  374. <OPTION VALUE="SP2">SP2</OPTION>
  375. <OPTION VALUE="SP3">SP3</OPTION>
  376. </SELECT>
  377. </td>
  378. <td class='clsTDBodyCell2' colspan='2'>
  379. Service pack version
  380. </td>
  381. </tr>
  382. <tr>
  383. <td class='clsTDBodyCell2'>
  384. <INPUT class='clsResponseInput' TYPE=TextBox NAME=tbBinaryLocation VALUE='Not specified' SIZE=50 OnFocus="javascript:if(String(this.value)=='Not specified') this.value='';">
  385. </td>
  386. <td class='clsTDBodyCell2' colspan=2>
  387. Please enter a location to the binary which a) Fixes this problem or
  388. b) the updated version. <BR>This information is used for bucketing logic,
  389. so every driver that is earlier than the driver suggested that fixes the problem is placed in an OLD_IMAGE bucket. <br>This field is required and must contain a pointer to the exact file that contains the fix that is being shipped to customers.
  390. </TD>
  391. </TR>
  392. <TR>
  393. <td class='clsTDBodyCell2' colspan=3>
  394. Please enter some description text, such as a <b>bug number</b> or <b>workaround</b> and <b>where the fix is located</b>, to describe your response to this issue. <BR>
  395. This text will be reviewed and a response will be formulated based upon the information that you provide: <BR>
  396. Please remember the information you provide should be formatted such that we turn it in to a <b>customer friendly response</b>.
  397. </td>
  398. </tr>
  399. <tr>
  400. <td class='clsTDBodyCell2' colspan=3>
  401. <TEXTAREA ID=Comment NAME=Comment COLS=100 ROWS=10 OnKeyUp="CheckCommentSize( this )"></TEXTAREA>
  402. </td>
  403. </tr>
  404. <tr>
  405. <td class='clsTDBodyCell2' colspan=3>
  406. If you have any questions, please contact the <a href="mailto:pfat?subject=Solution%20Request%20Question">Product Feedback and Analysis team.</a>
  407. </td>
  408. </tr>
  409. <TR>
  410. <td colspan=3 align=left style='padding-left:10px;padding-top:5px'>
  411. <input id='btnSolution' class='clsbutton' type='button' value='Submit Request' onclick="this.style.visibility='hidden';VerifySolutionForm()">
  412. <input class='clsButton' type='button' value='Cancel Request' Onclick="divCreateSolution.style.display='none';divBody.style.display='block'">
  413. </td>
  414. </tr>
  415. </table>
  416. </form>
  417. </div>
  418. <!--
  419. END CREATE SOLUTION BLOCK
  420. -->
  421. <!--
  422. BEGIN ADD COMMENT BLOCK
  423. -->
  424. <DIV ID=divAddComment STYLE="display:none" Class=ContentArea>
  425. <FORM ID=frmAddComment NAME=frmAddComment METHOD=POST ACTION="DBGPortal_AddComment.asp?BucketID=<%=URLEBucketID%>" >
  426. <INPUT TYPE=HIDDEN NAME=iBucket VALUE="<%=iBucket %>" >
  427. <INPUT TYPE=HIDDEN ID=FrameID NAME=FrameID VALUE="<%=FrameID%>">
  428. <table class="clsTableInfo" border="0" cellpadding="0" cellspacing="0" style='border:1px solid #6681d9;'>
  429. <tr>
  430. <td class='clsTDInfo' colspan=2>Add Comment - <%=CurrentDate%> by <%=GetShortUserAlias()%></td>
  431. </tr>
  432. <tr>
  433. <td class='clsTDBodyCell2'>Action:</td>
  434. <td class='clsTDBodyCell2'>
  435. <%
  436. BuildDropDown( "DBGPortal_GetCommentActions", "1", "Action" )
  437. %>
  438. </td>
  439. <td class='clsTDBodyCell2' align='left'>
  440. <b>Need to add a new action?&nbsp</b>Email <a href="mailto:pfat?subject=Need%20New%20Action%20added">Product Feedback and Analysis team.</a>
  441. </td>
  442. </tr>
  443. <tr>
  444. <td valign='top' class='clsTDBodyCell2'>Comment:</td>
  445. <td colspan='2' class='clsTDBodyCell2'>
  446. <textarea style='text-size:100%' ID=Comment NAME=Comment COLS=100 ROWS=10 OnKeyUp="CheckCommentSize( this )" ></TEXTAREA>
  447. </td>
  448. </tr>
  449. <tr>
  450. <td colspan=2 align=left style='padding-left:10px;padding-top:5px'>
  451. <input class='clsButton' type='button' value='Submit' OnClick="VerifyCommentForm()" >
  452. <input class='clsButton' type='button' value='Cancel' OnClick="divAddComment.style.display='none';divBody.style.display='block'">
  453. </td>
  454. </tr>
  455. </table>
  456. </form>
  457. </DIV>
  458. <!--
  459. END CREATE COMMENT BLOCK
  460. -->
  461. <!--
  462. BEGIN BODY BLOCK
  463. -->
  464. <div id=divBody>
  465. <table cellspacing=0 cellpadding=0 width=100% border=0>
  466. <tr>
  467. <td style='padding-left:16px'>
  468. <INPUT TYPE=Button VALUE="Add Comment" ID=btnAddComment NAME=btnAddComment OnClick="divAddComment.style.display='block';divBody.style.display='none'" STYLE='width:130px'>
  469. <INPUT TYPE=Button VALUE="Link Bug" ID=btnLinkBug NAME=btnLinkBug OnClick="divUpdateBugNumber.style.display='block';divBody.style.display='none'" STYLE='width:130px'>
  470. <%
  471. if ( trim( SolutionID) == "null" && BucketStatus != "8" )
  472. {
  473. Response.Write("<INPUT TYPE=Button VALUE='Create Response' Onclick=\"divCreateSolution.style.display='block';divBody.style.display='none'\" STYLE='width:130px'>\n" )
  474. }
  475. else
  476. {
  477. if ( BucketStatus == "8" )
  478. {
  479. if ( BucketStatusAlias == GetShortUserAlias() )
  480. Response.Write("<INPUT TYPE=Button Value='Cancel Solution' STYLE='width:130px' onclick=\"javascript:document.all.divCancelSolution.style.display='block';divBody.style.display='none'\" alt='Cancel solution request'>\n" )
  481. }
  482. }
  483. %>
  484. <INPUT TYPE=Button VALUE="Request More Info" OnClick="divCreateBucketInfoRequest.style.display='block';divBody.style.display='none'" STYLE='width:130px'>
  485. <%
  486. if ( PoolCorruption == "true" )
  487. {
  488. Response.Write("<INPUT TYPE=Button VALUE='Clear Pool Corruption' STYLE='width:130px' OnClick='FlagPoolCorruption( 0 )'> " )
  489. }
  490. else
  491. {
  492. Response.Write("<INPUT TYPE='Button' VALUE='Flag Pool Corruption' STYLE='width:130px' OnClick='FlagPoolCorruption( 1 )'>" )
  493. }
  494. %>
  495. <INPUT TYPE=Button VALUE="Crash Histogram" OnClick="javascript:window.open('dbgportal_histogram.asp?BucketID=<%=URLEBucketID%>')" STYLE='width:130px' >
  496. </td>
  497. </tr>
  498. <tr>
  499. <td colspan='2'>
  500. <table id="tblUserBuckets" class="clsTableInfo" border="0" cellpadding="2" cellspacing="1">
  501. <tr>
  502. <td align="left" nowrap class="clsTDInfo">Date</td>
  503. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Email</td>
  504. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Action</td>
  505. <td style="BORDER-LEFT: white 1px solid" align="left" nowrap class="clsTDInfo">Comment</td>
  506. </tr>
  507. <%
  508. var rsBucketData = g_DBConn.Execute("DBGPortal_GetBucketComments '" + BucketID + "'" )
  509. var altColor = "sys-table-cell-bgcolor2"
  510. if ( rsBucketData.EOF )
  511. Response.Write( "<td valign='top' colspan='4' nowrap class='sys-table-cell-bgcolor1'>No comments have been made for this bucket</td>")
  512. while ( !rsBucketData.EOF )
  513. {
  514. if ( altColor == "sys-table-cell-bgcolor2" )
  515. altColor = "sys-table-cell-bgcolor1"
  516. else
  517. altColor = "sys-table-cell-bgcolor2"
  518. Response.Write("<tr>")
  519. Response.Write("<td valign='top' nowrap class='" + altColor + "'>" + rsBucketData("EntryDate") + "</td>")
  520. Response.Write("<td valign='top' nowrap class='" + altColor + "'>" + rsBucketData("CommentBy") + "</td>")
  521. Response.Write("<td valign='top' nowrap class='" + altColor + "'>" + rsBucketData("Action") + "</td>")
  522. Response.Write("<td valign='top' class='" + altColor + "'>" + rsBucketData("Comment") + "</td>")
  523. Response.Write("</tr>")
  524. rsBucketData.MoveNext()
  525. }
  526. %>
  527. </table>
  528. </td>
  529. </tr>
  530. </table>
  531. <br>
  532. <table>
  533. <tr>
  534. <td>
  535. <div id=divLoadingData>
  536. <p Class=clsPTitle>Loading data, please wait . . . </p>
  537. </div>
  538. </td>
  539. <tr>
  540. </table>
  541. <table width=100%>
  542. <tr>
  543. <td class='clsTDBodyCell' width='30%'>
  544. <INPUT TYPE=CheckBox id=chkCreateLog name=chkCreateLog Onclick="SetLogFileState( this.checked )">Create Logfile during debug sessions
  545. </td>
  546. <td class='clsTDBodyCell' width='30%'>
  547. If a crash does not belong in this bucket, send mail to <A HREF="MAILTO:[email protected]">AndreVa</A><BR>
  548. </td>
  549. </tr>
  550. </table>
  551. <table id="tblStatus" class="clsTableInfo" border="0" cellpadding="0" cellspacing="1" width='95%'>
  552. <tr>
  553. <td align="left" nowrap style="width:30px" class="clsTDInfo">Debug</td>
  554. <td style="BORDER-LEFT: white 1px solid;width:30px" align="left" nowrap class="clsTDInfo">FullDMP</td>
  555. <td style="BORDER-LEFT: white 1px solid;width:50px" align="left" nowrap class="clsTDInfo">Source</td>
  556. <td style="BORDER-LEFT: white 1px solid;width:50px" align="left" nowrap class="clsTDInfo">Entry Date</td>
  557. <td style="BORDER-LEFT: white 1px solid;width:30px" align="left" nowrap class="clsTDInfo">Build</td>
  558. <td style="BORDER-LEFT: white 1px solid;width:30px" align="left" nowrap class="clsTDInfo">SP</td>
  559. <td style="BORDER-LEFT: white 1px solid;width:100px" align="left" nowrap class="clsTDInfo">Email</td>
  560. <td style="BORDER-LEFT: white 1px solid;width:230px" align="left" nowrap class="clsTDInfo">Crash Cab Path</td>
  561. <%
  562. try
  563. {
  564. var rsCrashData = g_DBConn.Execute("DBGPortal_GetBucketCrashes '" + BucketID + "'" )
  565. var altColor = "sys-table-cell-bgcolor2"
  566. var ReplaceString = /\\/g
  567. while ( !rsCrashData.EOF )
  568. {
  569. if ( altColor == "sys-table-cell-bgcolor2" )
  570. altColor = "sys-table-cell-bgcolor1"
  571. else
  572. altColor = "sys-table-cell-bgcolor2"
  573. Response.Write("<tr>\n")
  574. var newPath = new String(rsCrashData("FilePath") )
  575. newPath = newPath.replace( ReplaceString, "\\\\" )
  576. Response.Write("<td align='center' valign='center' nowrap class='" + altColor + "'><img src='include/images/debug.bmp' border=0 align='absMiddle' OnClick=\"LaunchDebugger('" + newPath + "')\" style='cursor:hand' ALT='Launch debugger for this crash dump'></td>\n")
  577. var FullDmp = new String( rsCrashData("bFullDump" ) )
  578. if ( FullDmp == "1" )
  579. Response.Write("<td valign='center' nowrap class='" + altColor + "'>Yes!</td>\n")
  580. else
  581. Response.Write("<td valign='center' nowrap class='" + altColor + "'>&nbsp</td>\n")
  582. var Source = new String( rsCrashData("Source") )
  583. if ( Source == "1" )
  584. Response.Write("<td valign='center' nowrap class='" + altColor + "'>Web Site</td>\n")
  585. else if ( Source == "2" )
  586. Response.Write("<td valign='center' nowrap class='" + altColor + "'>CER Report</td>\n")
  587. else if ( Source == "0" )
  588. Response.Write("<td valign='center' nowrap class='" + altColor + "'>CMD DBG</td>\n")
  589. else if ( Source == "5" )
  590. Response.Write("<td valign='center' nowrap class='" + altColor + "'>Manual Upload</td>\n")
  591. else if ( Source == "6" )
  592. Response.Write("<td valign='center' nowrap class='" + altColor + "'>Stress Upload</td>\n")
  593. else
  594. Response.Write("<td valign='center' nowrap class='" + altColor + "'>Unknown[" + Source + "]</td>\n")
  595. var EntryDate = new Date( rsCrashData("EntryDate") )
  596. var EntryDate = ( EntryDate.getMonth() + 1 ) + "/" + EntryDate.getDate() + "/" + EntryDate.getFullYear()
  597. Response.Write("<td valign='center' nowrap class='" + altColor + "'>" + EntryDate + "</td>\n")
  598. var BuildNumber = new String( rsCrashData("BuildNo" ) )
  599. var SP = BuildNumber.substr( 4, 4 )
  600. var BuildNumber = BuildNumber.substr( 0, 4 )
  601. Response.Write("<td valign='center' nowrap class='" + altColor + "'>" + BuildNumber + "</td>\n")
  602. Response.Write("<td valign='center' nowrap class='" + altColor + "'>" + SP + "</td>\n")
  603. Response.Write("<td valign='center' nowrap class='" + altColor + "'>" + rsCrashData("Email") + "</td>\n")
  604. Response.Write("<td valign='center' nowrap class='" + altColor + "'><a href='" + rsCrashData("FilePath") + "'>" + rsCrashData("FilePath") + "</a></td>\n")
  605. Response.Write("</tr>\n")
  606. rsCrashData.MoveNext()
  607. }
  608. }
  609. catch( err )
  610. {
  611. Response.Write("</tr><tr><td align='left' class='sys-table-cell-bgcolor1' colspan='8'>An error occurred trying to retrive the bucket crashes, please try this task again<br>" + err.description + "</td></tr>" )
  612. }
  613. %>
  614. </table>
  615. </DIV>
  616. <SCRIPT LANGUAGE=JavaScript>
  617. var OpenWindow = null
  618. divLoadingData.style.display='none'
  619. //alert( window.document.body.scrollHeight )
  620. //This is to resize the iframe so that it will fit in properly in teh window
  621. try
  622. {
  623. if( window.document.body.scrollHeight < 710 )
  624. window.parent.parent.frames("SepBody").document.all.iframe1[<%=FrameID%>].style.height = 720
  625. else
  626. window.parent.parent.frames("SepBody").document.all.iframe1[<%=FrameID%>].style.height = window.document.body.scrollHeight + 100
  627. }
  628. catch( err )
  629. {
  630. }
  631. //Get the create a log cookie value and set the checkmark initial state.
  632. var CreateLog = new String( GetCookie("CreateLog" ) )
  633. if ( "true" == CreateLog )
  634. document.all.chkCreateLog.checked = true
  635. function SetLogFileState( curVal )
  636. {
  637. document.cookie = "CreateLog=" + curVal
  638. }
  639. function GetCookie(sName)
  640. {
  641. // cookies are separated by semicolons
  642. var aCookie = document.cookie.split("; ");
  643. for (var i=0; i < aCookie.length; i++)
  644. {
  645. // a name/value pair (a crumb) is separated by an equal sign
  646. var aCrumb = aCookie[i].split("=");
  647. if (sName == aCrumb[0])
  648. return unescape(aCrumb[1]);
  649. }
  650. // a cookie with the requested name does not exist
  651. return null;
  652. }
  653. function ShowAllCustomerInfo()
  654. {
  655. var c = new Object( document.all.CrashTable.rows )
  656. if ( GetCookie( "OpenCustomerData" ) == "none" )
  657. {
  658. document.cookie = "OpenCustomerData=block;expires=Mon, 31 Dec 2004 0:0:0 UTC"
  659. document.all.btnOpenCustomerData.value = "Close All Customer Data"
  660. }
  661. else
  662. {
  663. document.cookie = "OpenCustomerData=none;expires=Mon, 31 Dec 2004 0:0:0 UTC"
  664. document.all.btnOpenCustomerData.value = "Open All Customer Data"
  665. }
  666. for ( var i=2 ; i < document.all.CrashTable.rows.length ; i++ )
  667. {
  668. for ( var j=0; j < document.all.CrashTable.rows(i).cells.length ; j++ )
  669. {
  670. try
  671. {
  672. OpenElement( document.all.CrashTable.rows(i).cells(j).children(1) )
  673. }catch(err)
  674. {
  675. ;
  676. }
  677. }
  678. }
  679. }
  680. function OpenElement( element )
  681. {
  682. if ( element.parentNode.children(1).style.display=='none' )
  683. {
  684. element.parentNode.children(1).style.display='block'
  685. element.src='images/minus.jpg'
  686. }
  687. else
  688. {
  689. element.parentNode.children(1).style.display='none'
  690. element.src='images/plus.jpg'
  691. }
  692. }
  693. function trim ( src )
  694. {
  695. var temp = new String( src )
  696. var rep = /^( *)/
  697. var rep2 = /( )*$/
  698. var temp = temp.replace( rep2, "" )
  699. return ( temp.replace( rep, "" ) )
  700. }
  701. function VerifyNewBugNumber()
  702. {
  703. if ( isNaN(document.all.UpdateBugNumber.value) || trim( document.all.UpdateBugNumber.value ) == "" )
  704. {
  705. alert( "Please enter a valid bug number")
  706. return
  707. }
  708. else
  709. frmUpdBugNumber.submit()
  710. }
  711. function fnShowCustomerBuckets()
  712. {
  713. document.cookie = "ShowCustomerBuckets=1;expires=Mon, 31 Dec 2004 0:0:0 UTC"
  714. window.navigate('DBGPortal_ViewBucket.asp?BucketID=<%=URLEBucketID%>&ShowCustomerBuckets=1')
  715. }
  716. function fnHideCustomerBuckets()
  717. {
  718. document.cookie = "ShowCustomerBuckets="
  719. window.navigate('DBGPortal_ViewBucket.asp?BucketID=<%=URLEBucketID%>')
  720. }
  721. function VerifyCommentForm()
  722. {
  723. var CommentField = document.frmAddComment.Comment.value
  724. if ( CommentField.length > 900 )
  725. {
  726. //in essance the auto truncation stuff is gonzo, since I automatically limit them to 900 elsewhere.
  727. if( confirm("Your comments are greater than 900 characters. Comment text must be below 900, would you like to automatically truncate your comment? Currently have " + CommentField.length + " characters" ) == false )
  728. {
  729. document.all.taAddComment.style.visibility="visible"
  730. return
  731. }
  732. }
  733. document.frmAddComment.submit()
  734. }
  735. function VerifySolutionForm()
  736. {
  737. var regEx = /(.sys)|(.dll)/gi;
  738. var binLoc = new String( document.all.tbBinaryLocation.value )
  739. if ( !regEx.test( binLoc ) )
  740. {
  741. alert("You must enter a valid binary name and location in order to request a response")
  742. document.frmCreateSolution.btnSolution.style.visibility='visible'
  743. return
  744. }
  745. var SolutionField = document.frmCreateSolution.Comment.value
  746. if ( SolutionField.length > 900 )
  747. {
  748. if( confirm("Your comments are greater than 900 characters. Comment text must be below 900, would you like to automatically truncate your solution? Currently have " + SolutionField.length + " characters" ) == false )
  749. {
  750. document.frmCreateSolution.btnSolution.style.visibility='visible'
  751. return
  752. }
  753. }
  754. if ( document.all.SolutionType.value == "None" )
  755. {
  756. alert("You must select a solution type!" )
  757. document.frmCreateSolution.btnSolution.style.visibility='visible'
  758. return
  759. }
  760. if ( document.all.DeliveryType.value == "None" )
  761. {
  762. alert("You must select a delivery type!" )
  763. document.frmCreateSolution.btnSolution.style.visibility='visible'
  764. return
  765. }
  766. var oComment = "TYPE: " + document.all.SolutionType.value + "<BR>"
  767. oComment += "DELIVERY: " + document.all.DeliveryType.value + "<BR>"
  768. oComment += "CONTACT: " + document.all.tbCompany.value + "<BR>"
  769. oComment += "MODULE : " + document.all.tbModule.value + "<BR>"
  770. oComment += "PRODUCT: " + document.all.tbProduct.value + "<BR>"
  771. oComment += "SP: " + document.all.optSP.value + "<BR>"
  772. oComment += "BinLoc: " + document.all.tbBinaryLocation.value + "<BR>"
  773. oComment += "COMMENTS: <BR>" + document.frmCreateSolution.Comment.value
  774. document.frmCreateSolution.Comment.value = oComment
  775. frmCreateSolution.submit()
  776. }
  777. function ShowCustomerInfo ( IncidentID )
  778. {
  779. var iHeight = window.screen.availHeight;
  780. var iWidth = window.screen.availWidth;
  781. iWidth = iWidth / 2;
  782. //iHeight = iHeight / 1.5 ;
  783. var iTop = (window.screen.width / 2) - (iWidth / 2);
  784. var iLeft = (window.screen.height / 2) - (iHeight / 2);
  785. // window.open( "DBGPortal_DisplayCustomerInformation.asp?IncidentID=" + IncidentID )
  786. try
  787. {
  788. OpenWindow.navigate( "DBGPortal_DisplayCustomerInformation.asp?IncidentID=" + IncidentID )
  789. }
  790. catch ( err )
  791. {
  792. //OpenWindow = window.open( "DBGPortal_DisplayCustomerInformation.asp?IncidentID=" + IncidentID, "", "top=" + iTop + ",left=" + iLeft + ",height=" + iHeight + ",width=" + iWidth + ",status=yes,toolbar=no,menubar=no");
  793. OpenWindow = window.open( "DBGPortal_DisplayCustomerInformation.asp?IncidentID=" + IncidentID, "", "top=" + iTop + ",left=" + iLeft + ",width=" + iWidth + ",status=yes,toolbar=no,menubar=no,scrollbars=yes,resizable=yes" );
  794. }
  795. }
  796. function LaunchDebugger( DumpFiletoOpen )
  797. {
  798. var szCommandLine
  799. var vbLf
  800. var retval
  801. try
  802. {
  803. vblf="\n"
  804. //this command line is for windbg
  805. //szCommandLine="-Q -c '.logopen c:\\<%=trim(BucketID)%>.log;!analyzebugcheck -v' -i symsrv*symsrv.dll*\\\\symbols\\symbols;symsrv*symsrv.dll*\\\\bsod_symbols\\symsrv -y symsrv*symsrv.dll*\\\\symbols\\symbols;symsrv*symsrv.dll*\\\\bsod_symbols\\symsrv -z " + DumpFiletoOpen
  806. //retval = DBGPortal.RunProcess ( szCommandLine, "2" )
  807. if ( document.all.chkCreateLog.checked )
  808. szCommandLine="-c \".logopen c:\\<%=trim(BucketID)%>.log;!analyze -v\" -i symsrv*symsrv.dll*\\\\symbols\\symbols -y symsrv*symsrv.dll*\\\\symbols\\symbols -z " + DumpFiletoOpen
  809. else
  810. szCommandLine="-c \"!analyze -v\" -i symsrv*symsrv.dll*\\\\symbols\\symbols -y symsrv*symsrv.dll*\\\\symbols\\symbols -z " + DumpFiletoOpen
  811. //alert( szCommandLine )
  812. retval = DBGPortal.RunProcess ( szCommandLine, "1" )
  813. //alert ( retval )
  814. //alert ( DBGPortal.GetRunProcessRetval )
  815. if ( DBGPortal.GetRunProcessRetval == 0 )
  816. {
  817. alert("Could not execute debugger, please try again later: \n" + DBGPortal.GetRunprocessErrMsg )
  818. return;
  819. }
  820. //szCommandLine="-c \".logopen c:\<%=trim(BucketID)%>.log;!analyzebugcheck -v\" -i symsrv*symsrv.dll*\\\\symbols\\symbols;symsrv*symsrv.dll*\\\\bsod_symbols\\symsrv -y symsrv*symsrv.dll*\\\\symbols\\symbols;symsrv*symsrv.dll*\\\\bsod_symbols\\symsrv -z " + DumpFiletoOpen
  821. //\\dbg\privates\latest\uncompressed\x86\
  822. /*
  823. if document.all.chkUseWinDBG.checked=true then
  824. szCommandLine="-Q -c '.logopen c:\<%=Request("ClassID")%>.log;!analyzebugcheck -v' -i symsrv*symsrv.dll*\\symbols\symbols;symsrv*symsrv.dll*\\bsod_symbols\symsrv -y symsrv*symsrv.dll*\\symbols\symbols;symsrv*symsrv.dll*\\bsod_symbols\symsrv -z " & DumpFiletoOpen
  825. retval = DBGPortal.RunProcess ( cstr(szCommandLine), "2" )
  826. else
  827. szCommandLine="-c " & chr(34) & ".logopen c:\<%=Request("ClassID")%>.log;!analyzebugcheck -v" & chr(34) & " -i symsrv*symsrv.dll*\\symbols\symbols;symsrv*symsrv.dll*\\bsod_symbols\symsrv -y symsrv*symsrv.dll*\\symbols\symbols;symsrv*symsrv.dll*\\bsod_symbols\symsrv -z " & DumpFiletoOpen
  828. retval = DBGPortal.RunProcess ( cstr(szCommandLine), "1" )
  829. end if
  830. if not isnull( DBGPortal.GetRunProcessRetVal ) then
  831. if DBGPortal.GetRunProcessRetVal=0 then
  832. msgbox "Could not execute the command line" & vbLf & szCommandLine & vbLf & vbLF & "Err message returned: " & DBGPortal.GetRunprocessErrMsg
  833. end if
  834. else
  835. msgbox "Could not get return value from ActiveX control"
  836. end if
  837. */
  838. }
  839. catch ( err )
  840. {
  841. ;
  842. }
  843. }
  844. function CheckCommentSize( obj )
  845. {
  846. var Comment = new String( obj.value )
  847. if( obj.value.length > 900 )
  848. {
  849. alert('Comments cannot exceed 900 characters. \n');
  850. obj.value=Comment.substr(0,900);
  851. }
  852. }
  853. function FlagPoolCorruption( State )
  854. {
  855. //alert( State )
  856. if ( State == 1 )
  857. {
  858. var Comment = "Flagging pool corruption."
  859. window.navigate( "DBGPortal_AddComment.asp?BucketID=<%=URLEBucketID%>&iBucket=<%=iBucket%>&Action=12&Comment=" + Comment )
  860. }
  861. else
  862. {
  863. var Comment = "Clearing pool corruption flag."
  864. window.navigate( "DBGPortal_AddComment.asp?BucketID=<%=URLEBucketID%>&iBucket=<%=iBucket%>&Action=13&Comment=" + Comment )
  865. }
  866. }
  867. function fnBookmark ()
  868. {
  869. bookmarkurl="http://<%=Request.ServerVariables("SERVER_NAME")%>/DBGPortal_ViewBucket.asp?<%=Request.QueryString()%>"
  870. bookmarktitle="DBGPortal - <%=BucketID%>"
  871. window.external.AddFavorite(bookmarkurl,bookmarktitle)
  872. }
  873. </SCRIPT>