885: IE 6 is hanging while clicking any button save -delete- the comment window

vanag******@gmai***** (Google Code) (Is this you? Claim this profile.)
Sept. 30, 2012
What's the URL of the page containing the problem?
http://xscope.lss.emc.com/r/7/diff/#index_header

What steps will reproduce the problem?
1. Open a Code review by somebody else.
2. Try to write a comment, try to save it, delete it
3.

What is the expected output? What do you see instead?
The comment window should save the comment and further operations should 
be allowed

What operating system are you using? What browser?


Please provide any additional information below.
chipx86
#1 chipx86
I don't fully understand the repro case or which dialog you're talking about. Can you
tell me what version is being used and go into this in more detail?
  • +NeedInfo
#2 Jay****@gmai***** (Google Code) (Is this you? Claim this profile.)
Open a review using ie6 browser. Internet Explorer 6 on Windows XP.
Click on View Diff.
Click on a line number.
Type in a comment.
Hit save.
Click on the same comment.
Hit delete.
The internet explorer browser hangs for a long time.
david
#3 david
  • -NeedInfo
    +New
chipx86
#4 chipx86
  • +Browser
    +OpSys-Windows
david
#5 david
  • +Component-DiffViewer
#6 lon***@gmai***** (Google Code) (Is this you? Claim this profile.)
I am seeing the same issue with IE6, both with the latest development version 1.1
alpha2 or a previous version.  In the best case, the comment window is truncated at
the bottom.  On the worst case (and most common), IE is not responsive at all, and
takes 50% of the CPU (actually 100% of one CPU, has I have 2 CPUs on my Windows
laptop).  Is there anything I could do to help debug this problem?
chipx86
#7 chipx86
The problem is, debugging anything on IE6 is really hard. The only way to do it
sanely is with the Visual Studio integration. Even then, I'm not sure how best to go
about debugging this, except to stop the script when it's spinning.
#8 lon***@gmai***** (Google Code) (Is this you? Claim this profile.)
I think I found a recursion in iePNGFix() in
http://demo.review-board.org/media/rb/js/pngfix.htc (thanks to MS Script Editor).

  setTimeout(function() { this.style.backgroundImage = '' }, 0)

is triggerring a property change, calling iePNGFix() again, with:

  style.backgroundImage = 'url("' + blankImg + '")';

which is triggerring yet another property change, calling iePNGFix() again, ...

These are the values of some interesting variables when I broke into the loop:

currentStyle.backgroundImage	
"url(\"http://demo.review-board.org/media/rb/images/comment-draft.png\")"	String

style.backgroundImage	"url(/media/rb/images/blank.gif)"	String

bgSrc	"url(\"http://demo.review-board.org/media/rb/images/comment-draft.png\")"	String

-	bgPNG	{...}	Object
	input	"url(\"http://demo.review-board.org/media/rb/images/comment-draft.png\")"	String
	index	0	Long
	lastIndex	69	Long
	[0]	"url(\"http://demo.review-board.org/media/rb/images/comment-draft.png\")"	String
	[1]	"http://demo.review-board.org/media/rb/images/comment-draft.png"	String


#9 lon***@gmai***** (Google Code) (Is this you? Claim this profile.)
I forgot to say that I could reproduce the issue using:
http://demo.review-board.org/r/2643/diff/ 
for instance.

Then hover over an existing comment and add a new comment on the same line.  In IE 6,
the loop occurs after the comment is saved - but not always.  (With Firefox, I
noticed there is a "Comment Saved" box showing up for a couple of seconds.  I've
never seen with IE.)
chipx86
#10 chipx86
Is this still reproduceable? Those scripts, I believe, have since changed.
  • -New
    +NeedInfo
#11 lon***@gmai***** (Google Code) (Is this you? Claim this profile.)
I just tried using http://demo.review-board.org/r/2643/diff/
and I still see the issue with IE.  Looks like an infinite loop:

>	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
 	JScript - ms__id4 anonymous function	JScript
 	iePNGFix	JScript
#12 lon***@gmai***** (Google Code) (Is this you? Claim this profile.)
I think the issue is around:

 var bgSrc = currentStyle.backgroundImage || style.backgroundImage;
 if ((bgSrc + this.src).indexOf(blank) == -1)
 {
  var bgPNG = bgSrc.match(/^url[("']+(.*\.png[^\)"']*)[\)"']+[^\)]*$/i);

  if (bgPNG)
  {
   style.backgroundImage = 'url("' + blankImg + '")';


this.src is undefined, while we would expect to see the value of
style.backgroundImage after the second iteration, because of the property change
triggered by style.backgroundImage = 'url("' + blankImg + '")';

This is the value of bgPNG:
"url(\"http://demo.reviewboard.org/media/rb/images/comment-draft.png\")undefined"
david
#13 david
  • -NeedInfo
    +New
david
#14 david
We will be officially dropping IE6 support in 1.7. Since this hasn't had any comments for more than 2 years, I think we can safely say that it's not worth spending time on.
  • -New
    +WontFix