Last Comment Bug 764269 - Application updates fail to apply under Linux
: Application updates fail to apply under Linux
Status: RESOLVED FIXED
: regression
Product: Toolkit
Classification: Components
Component: Application Update (show other bugs)
: Trunk
: x86 Linux
: -- major (vote)
: mozilla16
Assigned To: :Ehsan Akhgari (busy, don't ask for review please)
:
Mentors:
Depends on:
Blocks: bgupdates
  Show dependency treegraph
 
Reported: 2012-06-12 22:38 PDT by Landis Reed
Modified: 2012-08-02 11:54 PDT (History)
6 users (show)
ehsan: in‑testsuite+
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---
+
fixed


Attachments
FF-Aurora-15-update-failing_12.06.12-01 (13.15 KB, text/plain)
2012-06-12 22:38 PDT, Landis Reed
no flags Details
FF update / size / speed (13.15 KB, image/png)
2012-06-12 22:42 PDT, Landis Reed
no flags Details
download of 'same' file via ftp.. (45.44 KB, image/png)
2012-06-12 22:47 PDT, Landis Reed
no flags Details
Patch (v1) (12.25 KB, patch)
2012-06-13 17:40 PDT, :Ehsan Akhgari (busy, don't ask for review please)
robert.strong.bugs: review+
akeybl: approval‑mozilla‑aurora+
Details | Diff | Review
update now downloads, but now fails to apply (20.26 KB, image/png)
2012-06-13 23:06 PDT, Landis Reed
no flags Details

Description Landis Reed 2012-06-12 22:38:24 PDT
Created attachment 632552 [details]
FF-Aurora-15-update-failing_12.06.12-01

User Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120611 Firefox/15.0a2
Build ID: 20120611042006

Steps to reproduce:

ff notifies me 'update available' click update.



Actual results:

update downloads and 'applies' a 1.2'ish mb update then immediately starts a 22.6 mb update, but after several times, killing (Linux) firefox process, Second part of (22.6mb) Never gets past a meg and my 'download is around 2 to 5.8 kb/s..
is it your server or f*ing comcast and their 'caching servers'?


Expected results:

download the 22.6mb in a minute and ask me to 'restart'
Comment 1 Landis Reed 2012-06-12 22:42:54 PDT
Created attachment 632553 [details]
FF update / size / speed

same screen capture, attchment on intl post, mime text.
Comment 2 Landis Reed 2012-06-12 22:47:03 PDT
Created attachment 632555 [details]
download of 'same' file via ftp..
Comment 3 Bill Gianopoulos [:WG9s] 2012-06-13 05:26:57 PDT
Confirming this.  This has been happening to me since the fix for bug 307181 landed.
Comment 4 Bill Gianopoulos [:WG9s] 2012-06-13 06:59:24 PDT
Although I confirmed this bug, it really needs to be split into 2 bugs.  The reason being that it really describes 2 separate system, that to people running on Aurora would have started at the same time, for me running mozilla-central nightlies these did not both start on the same day.

The 2 issues are:

1.  Since the landing of bug 307181, application updates for Linux no longer apply correctly.

2.  The complete Linux MAR files take a long time to download via the application update process.

I am going to redo the summary for this bug to cover issue 1 only and submit a new bug for issue number 2.
Comment 5 Bill Gianopoulos [:WG9s] 2012-06-13 07:10:16 PDT
I filed Bug 764377 on issue number 2.
Comment 6 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 07:38:35 PDT
Landis/Bill, do you guys have the log files available for the failed updates?  You can find them in /path/to/firefox/updates/last-update.log and /path/to/firefox/updates/update-backup.log.
Comment 7 Bill Gianopoulos [:WG9s] 2012-06-13 11:51:03 PDT
(In reply to Ehsan Akhgari [:ehsan] from comment #6)
> Landis/Bill, do you guys have the log files available for the failed
> updates?  You can find them in /path/to/firefox/updates/last-update.log and
> /path/to/firefox/updates/update-backup.log.

OK from the updates log it seems the issue is that it is getting errors because of symlinks to plugins in the applications plugins directory.  I would think it should be ignoring this entire directory, but that is just me.

I use the applications plugins directory because I am running 64-bit Linux but both 32 and 64 bit Firefox and need a way to load 64-bit plugins for 64-bit firefox and 32-bit for 32-bit etc.

However the error I am getting also makes no sense because the log shows:

Performing a background update
SOURCE DIRECTORY /home/wag/nightly/updates/0
DESTINATION DIRECTORY /home/wag/nightly/updated
ensure_copy: failed to open the file for reading: /home/wag/nightly/plugins/nphe
lix.xpt, err: 1
failed: 6
calling QuitProgressUI

However that file is clearly readable:

od -c /home/wag/nightly/plugins/nphelix.xpt
0000000   X   P   C   O   M  \n   T   y   p   e   L   i   b  \r  \n 032
0000020 001 002  \0 002  \0  \0 023 336  \0  \0  \0   "  \0  \0  \0   Y
0000040 200  \0  \0  \0  \0  \0  \0  \0  \0 300  \0  \0  \0  \0  \0  \0
0000060   F  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0  \0 372   !   w
0000100   n 215   i   D   b 214   I 272 366 303 340 256      \0  \0  \0
0000120  \r  \0  \0  \0  \0  \0  \0  \0 031   n   s   I   S   u   p   p
0000140   o   r   t   s  \0   n   s   I   H   X   P   l   a   y   e   r
0000160  \0  \0 001  \0 265  \0  \0  \0  \a 230 002 200 220   `  \n  \0
0000200 006  \0  \0  \0  \a 242 002 200 220   `  \n  \0 006  \0  \0  \0
0000220  \a 263 003 200 220 200  \n   `  \n  \0 006  \0  \0  \0  \a 302
0000240 002 200 220   `  \n  \0 006  \0  \0  \0  \a 315 002 200  \n   `
0000260  \n  \0 006  \0  \0  \0  \a 332 002 200  \n   `  \n  \0 006  \0
0000300  \0  \0  \a 346 001   `  \n  \0 006  \0  \0  \0  \a 362 001   `
0000320  \n  \0 006  \0  \0  \0  \a 372 001   `  \n  \0 006  \0  \0  \0
0000340  \b 001 001   `  \n  \0 006  \0  \0  \0  \b  \b 001   ` 002  \0
0000360 006  \0  \0  \0  \b 024 002 200 002   `  \n  \0 006  \0  \0  \0
0000400  \b     001   ` 002  \0 006  \0  \0  \0  \b   * 001   ` 002  \0
0000420 006  \0  \0  \0  \b   7 001   ` 002  \0 006  \0  \0  \0  \b   F
0000440 001   ` 220  \0 006  \0  \0  \0  \b   O 001   ` 220  \0 006  \0
0000460  \0  \0  \b   Y 001   ` 220  \0 006  \0  \0  \0  \b   f 001   `
0000500  \n  \0 006  \0  \0  \0  \b   s 001   `  \n  \0 006  \0  \0  \0
0000520  \b   | 002 200  \n   `  \n  \0 006  \0  \0  \0  \b 206 001   `
0000540  \n  \0 006  \0  \0  \0  \b 221 001   `  \n  \0 006  \0  \0  \0
0000560  \b 234 001   `  \n  \0 006  \0  \0  \0  \b 250 001   `  \n  \0
0000600 006  \0  \0  \0  \b 264 001   `  \n  \0 006  \0  \0  \0  \b 301
0000620 001   `  \n  \0 006  \0  \0  \0  \b 311 001   `  \n  \0 006  \0
0000640  \0  \0  \b 326 001   `  \n  \0 006  \0  \0  \0  \b 343 001   `
0000660  \n  \0 006  \0  \0  \0  \b 357 001   `  \n  \0 006  \0  \0  \0
0000700  \b 373 002 200 002   `  \n  \0 006  \0  \0  \0  \t 005 002 200
0000720  \n   `  \n  \0 006  \0  \0  \0  \t  \r 002 200  \n   `  \n  \0
0000740 006  \0  \0  \0  \t   " 001   `  \n  \0 006  \0  \0  \0  \t   7
0000760 002 200  \n   `  \n  \0 006  \0  \0  \0  \t   H 002 200  \n   `
0001000  \n  \0 006  \0  \0  \0  \t   \ 001   `  \n  \0 006  \0  \0  \0
0001020  \t   p 001   ` 002  \0 006  \0  \0  \0  \t 200 001   ` 002  \0
0001040 006  \0  \0  \0  \t 223 001   ` 002  \0 006  \0  \0  \0  \t 250
0001060 001   ` 002  \0 006  \0  \0  \0  \t 272 001   ` 002  \0 006  \0
0001100  \0  \0  \t 311 001   ` 002  \0 006  \0  \0  \0  \t 335 001   `
0001120 002  \0 006  \0  \0  \0  \t 361 001   `  \n  \0 006  \0  \0  \0
0001140  \t 372 001   `  \n  \0 006  \0  \0  \0  \n  \n 002 200  \n   `
0001160  \n  \0 006  \0  \0  \0  \n 035 001   `  \n  \0 006  \0  \0  \0
0001200  \n   0 001   `  \n  \0 006  \0  \0  \0  \n   D 001   `  \n  \0
0001220 006  \0  \0  \0  \n   K 001   `  \n  \0 006  \0  \0  \0  \n   [
0001240 001   `  \n  \0 006  \0  \0  \0  \n   i 002 200 220   `  \n  \0
0001260 006  \0  \0  \0  \n   t 002 200  \n   `  \n  \0 006  \0  \0  \0
0001300  \n 203 001   `  \n  \0 006  \0  \0  \0  \n 222 001   `  \n  \0
0001320 006  \0  \0  \0  \n 236 002 200 220   `  \n  \0 006  \0  \0  \0
0001340  \n 252 001   ` 220  \0 006  \0  \0  \0  \n 271 001   `  \n  \0
0001360 006  \0  \0  \0  \n 305 002 200  \n   `  \n  \0 006  \0  \0  \0
0001400  \n 321 002 200  \n   `  \n  \0 006  \0  \0  \0  \n 334 001   `
0001420  \n  \0 006  \0  \0  \0  \n 347 001   ` 220  \0 006  \0  \0  \0
0001440  \n 361 001   `  \n  \0 006  \0  \0  \0  \n 371 001   `  \n  \0
0001460 006  \0  \0  \0  \v 002 001   `  \n  \0 006  \0  \0  \0  \v 017
0001500 001   ` 220  \0 006  \0  \0  \0  \v   " 002 200 220   `  \n  \0
0001520 006  \0  \0  \0  \v   5 001   `  \n  \0 006  \0  \0  \0  \v   ?
0001540 001   ` 002  \0 006  \0  \0  \0  \v   M 001   ` 002  \0 006  \0
0001560  \0  \0  \v   Z 001   ` 220  \0 006  \0  \0  \0  \v   e 001   `
0001600  \n  \0 006  \0  \0  \0  \v   y 001   `  \n  \0 006  \0  \0  \0
0001620  \v 215 001   `  \n  \0 006  \0  \0  \0  \v 243 001   ` 220  \0
0001640 006  \0  \0  \0  \v 257 001   `  \n  \0 006  \0  \0  \0  \v 277
0001660 001   `  \n  \0 006  \0  \0  \0  \v 315 001   `  \n  \0 006  \0
0001700  \0  \0  \v 333 001   `  \n  \0 006  \0  \0  \0  \v 355 001   `
0001720  \n  \0 006  \0  \0  \0  \v 365 001   `  \n  \0 006  \0  \0  \0
0001740  \f 001 001   ` 002  \0 006  \0  \0  \0  \f  \f 001   `  \n  \0
0001760 006  \0  \0  \0  \f 031 001   `  \n  \0 006  \0  \0  \0  \f   ,
0002000 001   `  \n  \0 006  \0  \0  \0  \f   > 001   ` 002  \0 006  \0
0002020  \0  \0  \f   H 002 200  \n   `  \n  \0 006  \0  \0  \0  \f   R
0002040 002 200  \n   `  \n  \0 006  \0  \0  \0  \f   d 002 200  \n   `
0002060  \n  \0 006  \0  \0  \0  \f   z 002 200  \n   `  \n  \0 006  \0
0002100  \0  \0  \f 216 002 200  \n   `  \n  \0 006  \0  \0  \0  \f 242
0002120 001   `  \n  \0 006  \0  \0  \0  \f 260 001   `  \n  \0 006  \0
0002140  \0  \0  \f 276 001   `  \n  \0 006  \0  \0  \0  \f 316 002 200
0002160  \n   `  \n  \0 006  \0  \0  \0  \f 330 001   `  \n  \0 006  \0
0002200  \0  \0  \f 342 002 200 002   `  \n  \0 006  \0  \0  \0  \f 355
0002220 002 200  \n   `  \n  \0 006  \0  \0  \0  \f 372 002 200  \n   `
0002240  \n  \0 006  \0  \0  \0  \r  \f 002 200  \n   `  \n  \0 006  \0
0002260  \0  \0  \r   " 002 200  \n   `  \n  \0 006  \0  \0  \0  \r   5
0002300 002 200  \n   `  \n  \0 006  \0  \0  \0  \r   C 001   `  \n  \0
0002320 006  \0  \0  \0  \r   Y 001   `  \n  \0 006  \0  \0  \0  \r   l
0002340 001   `  \n  \0 006  \0  \0  \0  \r   z 001   ` 002  \0 006  \0
0002360  \0  \0  \r 210 001   ` 002  \0 006  \0  \0  \0  \r 230 002 200
0002400 002   ` 220  \0 006  \0  \0  \0  \r 246 002 200 002   ` 220  \0
0002420 006  \0  \0  \0  \r 265 002 200 002   ` 220  \0 006  \0  \0  \0
0002440  \r 307 002 200 002   ` 220  \0 006  \0  \0  \0  \r 330 002 200
0002460  \n   `  \n  \0 006  \0  \0  \0  \r 343 001   `  \n  \0 006  \0
0002500  \0  \0  \r 356 001   ` 002  \0 006  \0  \0  \0 016 006 001   `
0002520 002  \0 006  \0  \0  \0 016     001   ` 002  \0 006  \0  \0  \0
0002540 016   7 001   ` 002  \0 006  \0  \0  \0 016   M 001   ` 220  \0
0002560 006  \0  \0  \0 016   g 001   ` 002  \0 006  \0  \0  \0 016   x
0002600 001   ` 002  \0 006  \0  \0  \0 016 206 002 200 002   ` 220  \0
0002620 006  \0  \0  \0 016 231 002 200 002   `  \n  \0 006  \0  \0  \0
0002640 016 247 001   ` 002  \0 006  \0  \0  \0 016 265 001   `  \n  \0
0002660 006  \0  \0  \0 016 304 002 200  \n   `  \n  \0 006  \0  \0  \0
0002700 016 323 003 200 002 200  \n   `  \n  \0 006  \0  \0  \0 016 346
0002720 002 200 002   `  \n  \0 006  \0  \0  \0 016 371 002 200  \n   `
0002740  \n  \0 006  \0  \0  \0 017  \b 001   `  \n  \0 006  \0  \0  \0
0002760 017 027 001   ` 220  \0 006  \0  \0  \0 017   % 001   ` 220  \0
0003000 006  \0  \0  \0 017   = 001   ` 220  \0 006  \0  \0  \0 017   T
0003020 001   ` 002  \0 006  \0  \0  \0 017   i 001   ` 002  \0 006  \0
0003040  \0  \0 017   } 001   ` 220  \0 006  \0  \0  \0 017 227 001   `
0003060 002  \0 006  \0  \0  \0 017 254 001   ` 002  \0 006  \0  \0  \0
0003100 017 313 001   ` 002  \0 006  \0  \0  \0 017 351 001   ` 002  \0
0003120 006  \0  \0  \0 020 003 001   ` 002  \0 006  \0  \0  \0 020 035
0003140 001   ` 002  \0 006  \0  \0  \0 020   = 001   ` 002  \0 006  \0
0003160  \0  \0 020   \ 001   ` 002  \0 006  \0  \0  \0 020   w 001   `
0003200 002  \0 006  \0  \0  \0 020 222 001   ` 002  \0 006  \0  \0  \0
0003220 020 257 001   ` 002  \0 006  \0  \0  \0 020 313 001   ` 002  \0
0003240 006  \0  \0  \0 020 343 001   ` 002  \0 006  \0  \0  \0 020 373
0003260 001   ` 002  \0 006  \0  \0  \0 021 031 001   ` 002  \0 006  \0
0003300  \0  \0 021   6 001   ` 002  \0 006  \0  \0  \0 021   O 001   `
0003320 002  \0 006  \0  \0  \0 021   h 001   ` 002  \0 006  \0  \0  \0
0003340 021 206 001   ` 002  \0 006  \0  \0  \0 021 243 001   ` 002  \0
0003360 006  \0  \0  \0 021 274 001   ` 002  \0 006  \0  \0  \0 021 325
0003400 001   ` 002  \0 006  \0  \0  \0 021 364 001   ` 002  \0 006  \0
0003420  \0  \0 022 022 001   ` 002  \0 006  \0  \0  \0 022   , 001   `
0003440 002  \0 006  \0  \0  \0 022   F 001   ` 002  \0 006  \0  \0  \0
0003460 022   ` 001   ` 002  \0 006  \0  \0  \0 022   y 001   ` 002  \0
0003500 006  \0  \0  \0 022 216 001   ` 002  \0 006  \0  \0  \0 022 243
0003520 001   ` 002  \0 006  \0  \0  \0 022 273 001   ` 002  \0 006  \0
0003540  \0  \0 022 315 001   ` 002  \0 006  \0  \0  \0 022 343 001   `
0003560 002  \0 006  \0  \0  \0 022 363 001   ` 002  \0 006  \0  \0  \0
0003600 023  \f 001   ` 002  \0 006  \0  \0  \0 023 037 002 200 220   `
0003620  \n  \0 006  \0  \0  \0 023   ) 002 200 220   `  \n  \0 006  \0
0003640  \0  \0 023   2 002 200 220   `  \n  \0 006  \0  \0  \0 023   ?
0003660 001   `  \n  \0 006  \0  \0  \0 023   G 002 200  \n   `  \n  \0
0003700 006  \0  \0  \0 023   O 001   `  \n  \0 006  \0  \0  \0 023   Y
0003720 001   `  \n  \0 006  \0  \0  \0 023   j 002 200  \n   `  \n  \0
0003740 006  \0  \0  \0 023   { 002 200 220   ` 220  \0 006  \0  \0 200
0003760   S   e   t   S   o   u   r   c   e  \0   S   e   t   C   o   n
0004000   t   r   o   l   S   t   r   i   n   g  \0   S   e   t   C   o
0004020   n   s   o   l   e   N   a   m   e  \0   S   e   t   C   o   n
0004040   s   o   l   e  \0   S   e   t   A   u   t   o   S   t   a   r
0004060   t  \0   S   e   t   N   o   L   a   b   e   l   s  \0   D   o
0004100   P   l   a   y   P   a   u   s   e  \0   D   o   P   a   u   s
0004120   e  \0   D   o   P   l   a   y  \0   D   o   S   t   o   p  \0
0004140   G   e   t   P   o   s   i   t   i   o   n  \0   S   e   t   P
0004160   o   s   i   t   i   o   n  \0   G   e   t   L   e   n   g   t
0004200   h  \0   G   e   t   P   l   a   y   S   t   a   t   e  \0   G
0004220   e   t   S   t   e   r   e   o   S   t   a   t   e  \0   G   e
0004240   t   T   i   t   l   e  \0   G   e   t   A   u   t   h   o   r
0004260  \0   G   e   t   C   o   p   y   r   i   g   h   t  \0   G   e
0004300   t   L   i   v   e   S   t   a   t   e  \0   I   s   Z   o   o
0004320   m   e   d  \0   S   e   t   Z   o   o   m   e   d  \0   D   o
0004340   N   e   x   t   I   t   e   m  \0   D   o   P   r   e   v   I
0004360   t   e   m  \0   D   o   N   e   x   t   E   n   t   r   y  \0
0004400   D   o   P   r   e   v   E   n   t   r   y  \0   C   a   n   P
0004420   l   a   y   P   a   u   s   e  \0   C   a   n   S   t   o   p
0004440  \0   H   a   s   N   e   x   t   E   n   t   r   y  \0   H   a
0004460   s   P   r   e   v   E   n   t   r   y  \0   H   a   s   N   e
0004500   x   t   I   t   e   m  \0   H   a   s   P   r   e   v   I   t
0004520   e   m  \0   S   e   t   V   o   l   u   m   e  \0   S   e   t
0004540   M   u   t   e  \0   S   e   t   E   n   a   b   l   e   C   o
0004560   n   t   e   x   t   M   e   n   u  \0   G   e   t   E   n   a
0004600   b   l   e   C   o   n   t   e   x   t   M   e   n   u  \0   E
0004620   n   a   b   l   e   M   e   s   s   a   g   e   B   o   x  \0
0004640   S   e   t   E   n   a   b   l   e   M   e   s   s   a   g   e
0004660   B   o   x  \0   G   e   t   E   n   a   b   l   e   M   e   s
0004700   s   a   g   e   B   o   x  \0   G   e   t   P   a   c   k   e
0004720   t   s   T   o   t   a   l  \0   G   e   t   P   a   c   k   e
0004740   t   s   R   e   c   e   i   v   e   d  \0   G   e   t   P   a
0004760   c   k   e   t   s   O   u   t   O   f   O   r   d   e   r  \0
0005000   G   e   t   P   a   c   k   e   t   s   M   i   s   s   i   n
0005020   g  \0   G   e   t   P   a   c   k   e   t   s   L   a   t   e
0005040  \0   G   e   t   B   a   n   d   w   i   d   t   h   A   v   e
0005060   r   a   g   e  \0   G   e   t   B   a   n   d   w   i   d   t
0005100   h   C   u   r   r   e   n   t  \0   A   b   o   u   t   B   o
0005120   x  \0   E   d   i   t   P   r   e   f   e   r   e   n   c   e
0005140   s  \0   S   e   t   S   h   o   w   P   r   e   f   e   r   e
0005160   n   c   e   s  \0   H   i   d   e   S   h   o   w   S   t   a
0005200   t   i   s   t   i   c   s  \0   I   s   S   t   a   t   i   s
0005220   t   i   c   s   V   i   s   i   b   l   e  \0   I   s   D   o
0005240   n   e  \0   S   t   a   t   u   s   S   c   a   n   S   t   a
0005260   r   t  \0   S   t   a   t   u   s   S   c   a   n   E   n   d
0005300  \0   S   t   a   t   u   s   S   c   a   n  \0   S   e   t   A
0005320   u   t   o   G   o   T   o   U   R   L  \0   G   e   t   A   u
0005340   t   o   G   o   T   o   U   R   L  \0   P   r   o   c   e   s
0005360   s   I   d   l   e  \0   S   e   t   C   o   n   t   r   o   l
0005400   s  \0   G   e   t   V   e   r   s   i   o   n   I   n   f   o
0005420  \0   G   e   t   P   r   e   F   e   t   c   h  \0   S   e   t
0005440   P   r   e   F   e   t   c   h  \0   S   e   t   S   h   u   f
0005460   f   l   e  \0   G   e   t   S   h   u   f   f   l   e  \0   G
0005500   e   t   S   o   u   r   c   e  \0   C   a   n   P   l   a   y
0005520  \0   C   a   n   P   a   u   s   e  \0   G   e   t   A   u   t
0005540   o   S   t   a   r   t  \0   G   e   t   B   a   c   k   g   r
0005560   o   u   n   d   C   o   l   o   r  \0   S   e   t   B   a   c
0005600   k   g   r   o   u   n   d   C   o   l   o   r  \0   G   e   t
0005620   C   e   n   t   e   r  \0   G   e   t   C   l   i   p   H   e
0005640   i   g   h   t  \0   G   e   t   C   l   i   p   W   i   d   t
0005660   h  \0   G   e   t   C   o   n   s   o   l   e  \0   G   e   t
0005700   E   n   a   b   l   e   D   o   u   b   l   e   S   i   z   e
0005720  \0   G   e   t   E   n   a   b   l   e   F   u   l   l   S   c
0005740   r   e   e   n  \0   G   e   t   E   n   a   b   l   e   O   r
0005760   i   g   i   n   a   l   S   i   z   e  \0   G   e   t   C   o
0006000   n   t   r   o   l   s  \0   G   e   t   O   r   i   g   i   n
0006020   a   l   S   i   z   e  \0   G   e   t   F   u   l   l   S   c
0006040   r   e   e   n  \0   G   e   t   D   o   u   b   l   e   S   i
0006060   z   e  \0   G   e   t   M   a   i   n   t   a   i   n   A   s
0006100   p   e   c   t  \0   G   e   t   M   u   t   e  \0   G   e   t
0006120   N   o   L   a   b   e   l   s  \0   G   e   t   N   u   m   L
0006140   o   o   p  \0   G   e   t   S   h   o   w   A   b   o   u   t
0006160  \0   G   e   t   S   h   o   w   P   r   e   f   e   r   e   n
0006200   c   e   s  \0   G   e   t   S   h   o   w   S   t   a   t   i
0006220   s   t   i   c   s  \0   G   e   t   V   o   l   u   m   e  \0
0006240   S   e   t   C   e   n   t   e   r  \0   S   e   t   M   a   i
0006260   n   t   a   i   n   A   s   p   e   c   t  \0   S   e   t   E
0006300   n   a   b   l   e   O   r   i   g   i   n   a   l   S   i   z
0006320   e  \0   S   e   t   E   n   a   b   l   e   D   o   u   b   l
0006340   e   S   i   z   e  \0   S   e   t   E   n   a   b   l   e   F
0006360   u   l   l   S   c   r   e   e   n  \0   S   e   t   D   o   u
0006400   b   l   e   S   i   z   e  \0   S   e   t   F   u   l   l   S
0006420   c   r   e   e   n  \0   S   e   t   O   r   i   g   i   n   a
0006440   l   S   i   z   e  \0   S   e   t   N   o   L   o   g   o  \0
0006460   G   e   t   N   o   L   o   g   o  \0   S   e   t   N   u   m
0006500   L   o   o   p  \0   S   e   t   S   h   o   w   A   b   o   u
0006520   t  \0   S   e   t   S   h   o   w   S   t   a   t   i   s   t
0006540   i   c   s  \0   S   e   t   W   a   n   t   K   e   y   b   o
0006560   a   r   d   E   v   e   n   t   s  \0   S   e   t   W   a   n
0006600   t   M   o   u   s   e   E   v   e   n   t   s  \0   S   e   t
0006620   W   a   n   t   E   r   r   o   r   s  \0   G   e   t   W   a
0006640   n   t   K   e   y   b   o   a   r   d   E   v   e   n   t   s
0006660  \0   G   e   t   W   a   n   t   M   o   u   s   e   E   v   e
0006700   n   t   s  \0   G   e   t   W   a   n   t   E   r   r   o   r
0006720   s  \0   G   e   t   N   u   m   E   n   t   r   i   e   s  \0
0006740   G   e   t   C   u   r   r   e   n   t   E   n   t   r   y  \0
0006760   G   e   t   E   n   t   r   y   T   i   t   l   e  \0   G   e
0007000   t   E   n   t   r   y   A   u   t   h   o   r  \0   G   e   t
0007020   E   n   t   r   y   C   o   p   y   r   i   g   h   t  \0   G
0007040   e   t   E   n   t   r   y   A   b   s   t   r   a   c   t  \0
0007060   S   e   t   C   a   n   S   e   e   k  \0   G   e   t   C   a
0007100   n   S   e   e   k  \0   G   e   t   B   u   f   f   e   r   i
0007120   n   g   T   i   m   e   E   l   a   p   s   e   d  \0   G   e
0007140   t   B   u   f   f   e   r   i   n   g   T   i   m   e   R   e
0007160   m   a   i   n   i   n   g  \0   G   e   t   C   o   n   n   e
0007200   c   t   i   o   n   B   a   n   d   w   i   d   t   h  \0   G
0007220   e   t   P   r   e   f   e   r   e   d   L   a   n   g   u   a
0007240   g   e   I   D  \0   G   e   t   P   r   e   f   e   r   e   d
0007260   L   a   n   g   u   a   g   e   S   t   r   i   n   g  \0   G
0007300   e   t   U   s   e   r   C   o   u   n   t   r   y   I   D  \0
0007320   G   e   t   N   u   m   S   o   u   r   c   e   s  \0   G   e
0007340   t   S   o   u   r   c   e   T   r   a   n   s   p   o   r   t
0007360  \0   S   e   t   V   i   d   e   o   S   t   a   t   e  \0   G
0007400   e   t   V   i   d   e   o   S   t   a   t   e  \0   G   e   t
0007420   C   o   n   t   e   x   t   M   e   n   u  \0   S   e   t   C
0007440   o   n   t   e   x   t   M   e   n   u  \0   S   e   t   C   o
0007460   n   t   e   x   t   M   e   n   u   I   t   e   m  \0   G   e
0007500   t   C   o   n   t   e   x   t   M   e   n   u   I   t   e   m
0007520  \0   S   e   t   I   m   a   g   e   S   t   a   t   u   s  \0
0007540   G   e   t   I   m   a   g   e   S   t   a   t   u   s  \0   G
0007560   e   t   L   a   s   t   S   t   a   t   u   s  \0   G   e   t
0007600   L   a   s   t   E   r   r   o   r   M   o   r   e   I   n   f
0007620   o   U   R   L  \0   G   e   t   L   a   s   t   E   r   r   o
0007640   r   U   s   e   r   S   t   r   i   n   g  \0   G   e   t   L
0007660   a   s   t   E   r   r   o   r   U   s   e   r   C   o   d   e
0007700  \0   G   e   t   L   a   s   t   E   r   r   o   r   R   M   A
0007720   C   o   d   e  \0   G   e   t   L   a   s   t   E   r   r   o
0007740   r   R   M   A   C   o   d   e   S   t   r   i   n   g  \0   G
0007760   e   t   L   a   s   t   E   r   r   o   r   S   e   v   e   r
0010000   i   t   y  \0   G   e   t   L   a   s   t   L   e   f   t   B
0010020   u   t   t   o   n   D   o   w   n   T   i   m   e   S   t   a
0010040   m   p  \0   G   e   t   L   a   s   t   L   e   f   t   B   u
0010060   t   t   o   n   D   o   w   n   K   e   y   F   l   a   g   s
0010100  \0   G   e   t   L   a   s   t   L   e   f   t   B   u   t   t
0010120   o   n   D   o   w   n   X   P   o   s  \0   G   e   t   L   a
0010140   s   t   L   e   f   t   B   u   t   t   o   n   D   o   w   n
0010160   Y   P   o   s  \0   G   e   t   L   a   s   t   R   i   g   h
0010200   t   B   u   t   t   o   n   D   o   w   n   T   i   m   e   S
0010220   t   a   m   p  \0   G   e   t   L   a   s   t   R   i   g   h
0010240   t   B   u   t   t   o   n   D   o   w   n   K   e   y   F   l
0010260   a   g   s  \0   G   e   t   L   a   s   t   R   i   g   h   t
0010300   B   u   t   t   o   n   D   o   w   n   X   P   o   s  \0   G
0010320   e   t   L   a   s   t   R   i   g   h   t   B   u   t   t   o
0010340   n   D   o   w   n   Y   P   o   s  \0   G   e   t   L   a   s
0010360   t   L   e   f   t   B   u   t   t   o   n   U   p   T   i   m
0010400   e   S   t   a   m   p  \0   G   e   t   L   a   s   t   L   e
0010420   f   t   B   u   t   t   o   n   U   p   K   e   y   F   l   a
0010440   g   s  \0   G   e   t   L   a   s   t   L   e   f   t   B   u
0010460   t   t   o   n   U   p   X   P   o   s  \0   G   e   t   L   a
0010500   s   t   L   e   f   t   B   u   t   t   o   n   U   p   Y   P
0010520   o   s  \0   G   e   t   L   a   s   t   R   i   g   h   t   B
0010540   u   t   t   o   n   U   p   T   i   m   e   S   t   a   m   p
0010560  \0   G   e   t   L   a   s   t   R   i   g   h   t   B   u   t
0010600   t   o   n   U   p   K   e   y   F   l   a   g   s  \0   G   e
0010620   t   L   a   s   t   R   i   g   h   t   B   u   t   t   o   n
0010640   U   p   X   P   o   s  \0   G   e   t   L   a   s   t   R   i
0010660   g   h   t   B   u   t   t   o   n   U   p   Y   P   o   s  \0
0010700   G   e   t   L   a   s   t   L   e   f   t   B   u   t   t   o
0010720   n   D   b   l   T   i   m   e   S   t   a   m   p  \0   G   e
0010740   t   L   a   s   t   L   e   f   t   B   u   t   t   o   n   D
0010760   b   l   K   e   y   F   l   a   g   s  \0   G   e   t   L   a
0011000   s   t   L   e   f   t   B   u   t   t   o   n   D   b   l   X
0011020   P   o   s  \0   G   e   t   L   a   s   t   L   e   f   t   B
0011040   u   t   t   o   n   D   b   l   Y   P   o   s  \0   G   e   t
0011060   L   a   s   t   R   i   g   h   t   B   u   t   t   o   n   D
0011100   b   l   T   i   m   e   S   t   a   m   p  \0   G   e   t   L
0011120   a   s   t   R   i   g   h   t   B   u   t   t   o   n   D   b
0011140   l   K   e   y   F   l   a   g   s  \0   G   e   t   L   a   s
0011160   t   R   i   g   h   t   B   u   t   t   o   n   D   b   l   X
0011200   P   o   s  \0   G   e   t   L   a   s   t   R   i   g   h   t
0011220   B   u   t   t   o   n   D   b   l   Y   P   o   s  \0   G   e
0011240   t   L   a   s   t   M   o   u   s   e   M   o   v   e   T   i
0011260   m   e   S   t   a   m   p  \0   G   e   t   L   a   s   t   M
0011300   o   u   s   e   M   o   v   e   K   e   y   F   l   a   g   s
0011320  \0   G   e   t   L   a   s   t   M   o   u   s   e   M   o   v
0011340   e   X   P   o   s  \0   G   e   t   L   a   s   t   M   o   u
0011360   s   e   M   o   v   e   Y   P   o   s  \0   G   e   t   L   a
0011400   s   t   K   e   y   D   o   w   n   T   i   m   e   S   t   a
0011420   m   p  \0   G   e   t   L   a   s   t   K   e   y   D   o   w
0011440   n   K   e   y  \0   G   e   t   L   a   s   t   K   e   y   U
0011460   p   T   i   m   e   S   t   a   m   p  \0   G   e   t   L   a
0011500   s   t   K   e   y   U   p   K   e   y  \0   G   e   t   L   a
0011520   s   t   K   e   y   P   r   e   s   s   T   i   m   e   S   t
0011540   a   m   p  \0   G   e   t   L   a   s   t   K   e   y   P   r
0011560   e   s   s   K   e   y  \0   S   e   t   A   u   t   h   o   r
0011600  \0   S   e   t   T   i   t   l   e  \0   S   e   t   C   o   p
0011620   y   r   i   g   h   t  \0   G   e   t   L   o   o   p  \0   S
0011640   e   t   L   o   o   p  \0   G   e   t   I   s   P   l   u   s
0011660  \0   G   e   t   C   o   n   s   o   l   e   E   v   e   n   t
0011700   s  \0   S   e   t   C   o   n   s   o   l   e   E   v   e   n
0011720   t   s  \0   G   e   t   D   R   M   I   n   f   o  \0
0011736

So it would also seem that whatever code is at work here does not work correctly with symbolic links.
Comment 8 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 11:59:08 PDT
So, is /home/wag/nightly/plugins a symbolic link, or is the xpt file itself a symlink?  Do you mind attaching the outout of ls -R in /home/wag/nightly?
Comment 9 Bill Gianopoulos [:WG9s] 2012-06-13 12:09:47 PDT
OK the folder is not a symlink. Each individual file is my install procedure for 32-bit does this.

cd /usr/lib/mozilla
tar cf - plugins | (cd ~/nightly; tar xf -)

ls -lR yields

ls -lR
.:
total 50364
-rw-r--r--. 1 wag wag     1893 Jun 13 15:06 active-update.xml
-rw-r--r--. 1 wag wag      454 Jun 12 07:04 application.ini
-rw-r--r--. 1 wag wag    25234 Jun 12 07:04 blocklist.xml
drwxr-xr-x. 3 wag wag     4096 Jun 12 07:04 chrome
-rw-r--r--. 1 wag wag       36 Jun 12 07:04 chrome.manifest
drwxr-xr-x. 2 wag wag     4096 Jun 12 07:04 components
-rwxr-xr-x. 1 wag wag   155588 Jun 12 07:04 crashreporter
-rw-r--r--. 1 wag wag     4003 Jun 12 07:04 crashreporter.ini
-rw-r--r--. 1 wag wag      783 Jun 12 07:04 crashreporter-override.ini
drwxr-xr-x. 3 wag wag     4096 Jun 12 07:04 defaults
-rw-r--r--. 1 wag wag      142 Jun 12 07:04 dependentlibs.list
drwxr-xr-x. 2 wag wag     4096 Jun 12 07:04 dictionaries
drwxr-xr-x. 3 wag wag     4096 Jun 12 07:04 extensions
-rwxr-xr-x. 1 wag wag   104952 Jun 12 07:04 firefox
-rwxr-xr-x. 1 wag wag   104956 Jun 12 07:04 firefox-bin
drwxr-xr-x. 2 wag wag     4096 Jun 12 07:04 icons
-rw-r--r--. 1 wag wag      478 Jun 12 07:04 libfreebl3.chk
-rwxr-xr-x. 1 wag wag   331786 Jun 12 07:04 libfreebl3.so
-rwxr-xr-x. 1 wag wag     8610 Jun 12 07:04 libmozalloc.so
-rwxr-xr-x. 1 wag wag   694375 Jun 12 07:04 libmozsqlite3.so
-rwxr-xr-x. 1 wag wag   236055 Jun 12 07:04 libnspr4.so
-rwxr-xr-x. 1 wag wag  1049330 Jun 12 07:04 libnss3.so
-rwxr-xr-x. 1 wag wag   436853 Jun 12 07:04 libnssckbi.so
-rw-r--r--. 1 wag wag      478 Jun 12 07:04 libnssdbm3.chk
-rwxr-xr-x. 1 wag wag   148374 Jun 12 07:04 libnssdbm3.so
-rwxr-xr-x. 1 wag wag   126270 Jun 12 07:04 libnssutil3.so
-rwxr-xr-x. 1 wag wag    17184 Jun 12 07:04 libplc4.so
-rwxr-xr-x. 1 wag wag    13513 Jun 12 07:04 libplds4.so
-rwxr-xr-x. 1 wag wag   163904 Jun 12 07:04 libsmime3.so
-rw-r--r--. 1 wag wag      478 Jun 12 07:04 libsoftokn3.chk
-rwxr-xr-x. 1 wag wag   232201 Jun 12 07:04 libsoftokn3.so
-rwxr-xr-x. 1 wag wag   223644 Jun 12 07:04 libssl3.so
-rwxr-xr-x. 1 wag wag    17433 Jun 12 07:04 libxpcom.so
-rwxr-xr-x. 1 wag wag 39077616 Jun 12 07:04 libxul.so
-rwxr-xr-x. 1 wag wag    99862 Jun 12 07:04 mozilla-xremote-client
-rw-r--r--. 1 wag wag  7705992 Jun 12 07:04 omni.ja
-rw-r--r--. 1 wag wag      128 Jun 12 07:04 platform.ini
-rwxr-xr-x. 1 wag wag    89166 Jun 12 07:04 plugin-container
drwxr-xr-x. 2 wag wag     4096 Jun  9 11:07 plugins
-rw-r--r--. 1 wag wag     1865 Jun 12 07:04 precomplete
-rw-r--r--. 1 wag wag    35697 Jun 12 07:04 removed-files
-rwxr-xr-x. 1 wag wag     8915 Jun 12 07:04 run-mozilla.sh
drwxr-xr-x. 2 wag wag     4096 Jun 12 07:04 searchplugins
-rw-r--r--. 1 wag wag      825 Jun 12 07:04 Throbber-small.gif
drwxr-xr-x. 4 wag wag     4096 Jun 13 15:06 updated
-rwxr-xr-x. 1 wag wag   157694 Jun 12 07:04 updater
-rw-r--r--. 1 wag wag      681 Jun 12 07:04 updater.ini
drwxr-xr-x. 3 wag wag     4096 Jun 13 15:06 updates
-rw-r--r--. 1 wag wag      132 Jun 12 07:04 update-settings.ini
-rw-r--r--. 1 wag wag       57 Jun 13 15:06 updates.xml
drwxr-xr-x. 3 wag wag     4096 Jun 12 07:04 webapprt
-rwxr-xr-x. 1 wag wag   141219 Jun 12 07:04 webapprt-stub

./chrome:
total 4
drwxr-xr-x. 3 wag wag 4096 Jun 12 07:04 icons

./chrome/icons:
total 4
drwxr-xr-x. 2 wag wag 4096 Jun 12 07:04 default

./chrome/icons/default:
total 16
-rw-r--r--. 1 wag wag  924 Jun 12 07:04 default16.png
-rw-r--r--. 1 wag wag 2603 Jun 12 07:04 default32.png
-rw-r--r--. 1 wag wag 5040 Jun 12 07:04 default48.png

./components:
total 260
-rw-r--r--. 1 wag wag   137 Jun 12 07:04 binary.manifest
-rwxr-xr-x. 1 wag wag 91794 Jun 12 07:04 libbrowsercomps.so
-rwxr-xr-x. 1 wag wag 41095 Jun 12 07:04 libdbusservice.so
-rwxr-xr-x. 1 wag wag 61826 Jun 12 07:04 libmozgnome.so
-rwxr-xr-x. 1 wag wag 55490 Jun 12 07:04 libnkgnomevfs.so

./defaults:
total 4
drwxr-xr-x. 2 wag wag 4096 Jun 12 07:04 pref

./defaults/pref:
total 4
-rw-r--r--. 1 wag wag 329 Jun 12 07:04 channel-prefs.js

./dictionaries:
total 616
-rw-r--r--. 1 wag wag   3274 Jun 12 07:04 en-US.aff
-rw-r--r--. 1 wag wag 624100 Jun 12 07:04 en-US.dic

./extensions:
total 4
drwxr-xr-x. 2 wag wag 4096 Jun 12 07:04 {972ce4c6-7e08-4474-a285-3208198ce6fd}

./extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}:
total 8
-rw-r--r--. 1 wag wag 2185 Jun 12 07:04 icon.png
-rw-r--r--. 1 wag wag 1325 Jun 12 07:04 install.rdf

./icons:
total 32
-rw-r--r--. 1 wag wag 24890 Jun 12 07:04 mozicon128.png
-rw-r--r--. 1 wag wag  4030 Jun 12 07:04 updater.png

./plugins:
total 0
lrwxrwxrwx. 1 wag wag 39 Jun  9 11:07 libflashplayer.so -> /usr/lib/flash-plugin/libflashplayer.so
lrwxrwxrwx. 1 wag wag 39 Apr 20  2011 nphelix.so -> /opt/real/RealPlayer/mozilla/nphelix.so
lrwxrwxrwx. 1 wag wag 40 Apr 20  2011 nphelix.xpt -> /opt/real/RealPlayer/mozilla/nphelix.xpt

./searchplugins:
total 28
-rw-r--r--. 1 wag wag 1607 Jun 12 07:04 amazondotcom.xml
-rw-r--r--. 1 wag wag 2465 Jun 12 07:04 bing.xml
-rw-r--r--. 1 wag wag 1344 Jun 12 07:04 eBay.xml
-rw-r--r--. 1 wag wag 3599 Jun 12 07:04 google.xml
-rw-r--r--. 1 wag wag 2253 Jun 12 07:04 twitter.xml
-rw-r--r--. 1 wag wag 1391 Jun 12 07:04 wikipedia.xml
-rw-r--r--. 1 wag wag 1309 Jun 12 07:04 yahoo.xml

./updated:
total 2820
drwxr-xr-x. 3 wag wag    4096 Jun 13 15:06 chrome
-rw-r--r--. 1 wag wag     783 Jun 13 15:06 crashreporter-override.ini
-rwxr-xr-x. 1 wag wag  104952 Jun 13 15:06 firefox
-rwxr-xr-x. 1 wag wag  104956 Jun 13 15:06 firefox-bin
-rwxr-xr-x. 1 wag wag  331786 Jun 13 15:06 libfreebl3.so
-rwxr-xr-x. 1 wag wag 1049330 Jun 13 15:06 libnss3.so
-rwxr-xr-x. 1 wag wag  436853 Jun 13 15:06 libnssckbi.so
-rwxr-xr-x. 1 wag wag   17184 Jun 13 15:06 libplc4.so
-rwxr-xr-x. 1 wag wag   13513 Jun 13 15:06 libplds4.so
-rwxr-xr-x. 1 wag wag  163904 Jun 13 15:06 libsmime3.so
-rwxr-xr-x. 1 wag wag  232201 Jun 13 15:06 libsoftokn3.so
-rwxr-xr-x. 1 wag wag  223644 Jun 13 15:06 libssl3.so
drwxr-xr-x. 2 wag wag    4096 Jun 13 15:06 plugins
-rw-r--r--. 1 wag wag    1865 Jun 13 15:06 precomplete
-rw-r--r--. 1 wag wag     825 Jun 13 15:06 Throbber-small.gif
-rwxr-xr-x. 1 wag wag  157694 Jun 13 15:06 updater
-rw-r--r--. 1 wag wag     681 Jun 13 15:06 updater.ini

./updated/chrome:
total 4
drwxr-xr-x. 3 wag wag 4096 Jun 13 15:06 icons

./updated/chrome/icons:
total 4
drwxr-xr-x. 2 wag wag 4096 Jun 13 15:06 default

./updated/chrome/icons/default:
total 16
-rw-r--r--. 1 wag wag  924 Jun 13 15:06 default16.png
-rw-r--r--. 1 wag wag 2603 Jun 13 15:06 default32.png
-rw-r--r--. 1 wag wag 5040 Jun 13 15:06 default48.png

./updated/plugins:
total 0

./updates:
total 8
drwxr-xr-x. 2 wag wag 4096 Jun 13 15:06 0
-rw-rw-r--. 1 wag wag  253 Jun 13 15:06 last-update.log

./updates/0:
total 296
-rw-------. 1 wag wag 300000 Jun 13 15:06 update.mar

./webapprt:
total 20
drwxr-xr-x. 2 wag wag 4096 Jun 12 07:04 components
-rw-r--r--. 1 wag wag 9852 Jun 12 07:04 omni.ja
-rw-r--r--. 1 wag wag  485 Jun 12 07:04 webapprt.ini

./webapprt/components:
total 0
Comment 10 Bill Gianopoulos [:WG9s] 2012-06-13 12:13:28 PDT
I also verified that symlinking the applications plugins folder to /usr/lib/mozilla/plugins works no better.  But, more importantly I verified that if I remove the applications plugins folder altogether the update install with no issues.
Comment 11 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 12:19:15 PDT
OK, I see.  We should probably teach ensure_copy and ensure_copy_recursive about symlinks...
Comment 12 Robert Strong [:rstrong] (use needinfo to contact me) 2012-06-13 12:22:00 PDT
Only for the stage copy case. We don't want the updater following symlinks when applying mar files.
Comment 13 Bill Gianopoulos [:WG9s] 2012-06-13 12:23:20 PDT
Oh, and the reason why I do this with symlinks is that some plugins, for example JAVA, will not work if you copy the .so file. It only works if it is a symlink.
Comment 14 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 12:27:30 PDT
(In reply to Robert Strong [:rstrong] (do not email) from comment #12)
> Only for the stage copy case. We don't want the updater following symlinks
> when applying mar files.

Yeah, specifically, only for the case where we are copying the installation directory.
Comment 15 Bill Gianopoulos [:WG9s] 2012-06-13 12:33:59 PDT
(In reply to Robert Strong [:rstrong] (do not email) from comment #12)
> Only for the stage copy case. We don't want the updater following symlinks
> when applying mar files.

Yes, I would think that if the updater encounters a place where it would be following one of these symlinks, then an appropriate error should be reported.  It should neither try to follow the symlink to update a file outside of the application folder, nor should it be replacing such a symlink with an actual file.
Comment 16 Robert Strong [:rstrong] (use needinfo to contact me) 2012-06-13 12:35:57 PDT
(In reply to Bill Gianopoulos [:WG9s] from comment #15)
> (In reply to Robert Strong [:rstrong] (do not email) from comment #12)
> > Only for the stage copy case. We don't want the updater following symlinks
> > when applying mar files.
> 
> Yes, I would think that if the updater encounters a place where it would be
> following one of these symlinks, then an appropriate error should be
> reported.  It should neither try to follow the symlink to update a file
> outside of the application folder, nor should it be replacing such a symlink
> with an actual file.
Which is what it already does when applying a mar file
Comment 17 Bill Gianopoulos [:WG9s] 2012-06-13 12:36:29 PDT
On the other-hand.  If this issue is really confined to the applications plugins folder which we no longer ship, it would be simpler to just ignore that folder for the purposes of the update.
Comment 18 Robert Strong [:rstrong] (use needinfo to contact me) 2012-06-13 12:38:00 PDT
(In reply to Bill Gianopoulos [:WG9s] from comment #17)
> On the other-hand.  If this issue is really confined to the applications
> plugins folder which we no longer ship, it would be simpler to just ignore
> that folder for the purposes of the update.
It isn't
Comment 19 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 16:10:08 PDT
So according to the man page of stat, we need execute permission on all of the directories that lead to the file.  So, for example I created a file named /tmp/foo/bar/x, removed the execute permission from /tmp/foo, and put a symlink to the file in the installation directory and managed to reproduce the bug.

At any rate, we should make ensure_copy aware of symlinks, because otherwise symlinks will be converted to regular files, which is bad.
Comment 20 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-13 17:40:50 PDT
Created attachment 632977 [details] [diff] [review]
Patch (v1)

This adds proper handling of symlinks to the updater, and also adds a test for it.
Comment 21 Landis Reed 2012-06-13 23:06:31 PDT
Created attachment 633035 [details]
update now downloads, but now fails to apply

the update channel run quickly again, but as you can see, fails to apply.
Landis.
Comment 22 Landis Reed 2012-06-13 23:08:47 PDT
(In reply to Bill Gianopoulos [:WG9s] from comment #7)
> (In reply to Ehsan Akhgari [:ehsan] from comment #6)
> > Landis/Bill, do you guys have the log files available for the failed
> > updates?  You can find them in /path/to/firefox/updates/last-update.log and
> > /path/to/firefox/updates/update-backup.log.
> 
> OK from the updates log it seems the issue is that it is getting errors
> because of symlinks to plugins in the applications plugins directory.  I
> would think it should be ignoring this entire directory, but that is just me.
> 
> I use the applications plugins directory because I am running 64-bit Linux
> but both 32 and 64 bit Firefox and need a way to load 64-bit plugins for
> 64-bit firefox and 32-bit for 32-bit etc.
> 
> However the error I am getting also makes no sense because the log shows:
> 
> Performing a background update
> SOURCE DIRECTORY /home/wag/nightly/updates/0
> DESTINATION DIRECTORY /home/wag/nightly/updated
> ensure_copy: failed to open the file for reading:
> /home/wag/nightly/plugins/nphe
> lix.xpt, err: 1
> failed: 6
> calling QuitProgressUI
> 
> However that file is clearly readable:
> 
> od -c /home/wag/nightly/plugins/nphelix.xpt
> 0000000   X   P   C   O   M  \n   T   y   p   e   L   i   b  \r  \n 032
> 0000020 001 002  \0 002  \0  \0 023 336  \0  \0  \0   "  \0  \0  \0   Y
> 0000040 200  \0  \0  \0  \0  \0  \0  \0  \0 300  \0  \0  \0  \0  \0  \0
> 0000060   F  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0  \0 372   !   w
> 0000100   n 215   i   D   b 214   I 272 366 303 340 256      \0  \0  \0
> 0000120  \r  \0  \0  \0  \0  \0  \0  \0 031   n   s   I   S   u   p   p
> 0000140   o   r   t   s  \0   n   s   I   H   X   P   l   a   y   e   r
> 0000160  \0  \0 001  \0 265  \0  \0  \0  \a 230 002 200 220   `  \n  \0
> 0000200 006  \0  \0  \0  \a 242 002 200 220   `  \n  \0 006  \0  \0  \0
> 0000220  \a 263 003 200 220 200  \n   `  \n  \0 006  \0  \0  \0  \a 302
> 0000240 002 200 220   `  \n  \0 006  \0  \0  \0  \a 315 002 200  \n   `
> 0000260  \n  \0 006  \0  \0  \0  \a 332 002 200  \n   `  \n  \0 006  \0
> 0000300  \0  \0  \a 346 001   `  \n  \0 006  \0  \0  \0  \a 362 001   `
> 0000320  \n  \0 006  \0  \0  \0  \a 372 001   `  \n  \0 006  \0  \0  \0
> 0000340  \b 001 001   `  \n  \0 006  \0  \0  \0  \b  \b 001   ` 002  \0
> 0000360 006  \0  \0  \0  \b 024 002 200 002   `  \n  \0 006  \0  \0  \0
> 0000400  \b     001   ` 002  \0 006  \0  \0  \0  \b   * 001   ` 002  \0
> 0000420 006  \0  \0  \0  \b   7 001   ` 002  \0 006  \0  \0  \0  \b   F
> 0000440 001   ` 220  \0 006  \0  \0  \0  \b   O 001   ` 220  \0 006  \0
> 0000460  \0  \0  \b   Y 001   ` 220  \0 006  \0  \0  \0  \b   f 001   `
> 0000500  \n  \0 006  \0  \0  \0  \b   s 001   `  \n  \0 006  \0  \0  \0
> 0000520  \b   | 002 200  \n   `  \n  \0 006  \0  \0  \0  \b 206 001   `
> 0000540  \n  \0 006  \0  \0  \0  \b 221 001   `  \n  \0 006  \0  \0  \0
> 0000560  \b 234 001   `  \n  \0 006  \0  \0  \0  \b 250 001   `  \n  \0
> 0000600 006  \0  \0  \0  \b 264 001   `  \n  \0 006  \0  \0  \0  \b 301
> 0000620 001   `  \n  \0 006  \0  \0  \0  \b 311 001   `  \n  \0 006  \0
> 0000640  \0  \0  \b 326 001   `  \n  \0 006  \0  \0  \0  \b 343 001   `
> 0000660  \n  \0 006  \0  \0  \0  \b 357 001   `  \n  \0 006  \0  \0  \0
> 0000700  \b 373 002 200 002   `  \n  \0 006  \0  \0  \0  \t 005 002 200
> 0000720  \n   `  \n  \0 006  \0  \0  \0  \t  \r 002 200  \n   `  \n  \0
> 0000740 006  \0  \0  \0  \t   " 001   `  \n  \0 006  \0  \0  \0  \t   7
> 0000760 002 200  \n   `  \n  \0 006  \0  \0  \0  \t   H 002 200  \n   `
> 0001000  \n  \0 006  \0  \0  \0  \t   \ 001   `  \n  \0 006  \0  \0  \0
> 0001020  \t   p 001   ` 002  \0 006  \0  \0  \0  \t 200 001   ` 002  \0
> 0001040 006  \0  \0  \0  \t 223 001   ` 002  \0 006  \0  \0  \0  \t 250
> 0001060 001   ` 002  \0 006  \0  \0  \0  \t 272 001   ` 002  \0 006  \0
> 0001100  \0  \0  \t 311 001   ` 002  \0 006  \0  \0  \0  \t 335 001   `
> 0001120 002  \0 006  \0  \0  \0  \t 361 001   `  \n  \0 006  \0  \0  \0
> 0001140  \t 372 001   `  \n  \0 006  \0  \0  \0  \n  \n 002 200  \n   `
> 0001160  \n  \0 006  \0  \0  \0  \n 035 001   `  \n  \0 006  \0  \0  \0
> 0001200  \n   0 001   `  \n  \0 006  \0  \0  \0  \n   D 001   `  \n  \0
> 0001220 006  \0  \0  \0  \n   K 001   `  \n  \0 006  \0  \0  \0  \n   [
> 0001240 001   `  \n  \0 006  \0  \0  \0  \n   i 002 200 220   `  \n  \0
> 0001260 006  \0  \0  \0  \n   t 002 200  \n   `  \n  \0 006  \0  \0  \0
> 0001300  \n 203 001   `  \n  \0 006  \0  \0  \0  \n 222 001   `  \n  \0
> 0001320 006  \0  \0  \0  \n 236 002 200 220   `  \n  \0 006  \0  \0  \0
> 0001340  \n 252 001   ` 220  \0 006  \0  \0  \0  \n 271 001   `  \n  \0
> 0001360 006  \0  \0  \0  \n 305 002 200  \n   `  \n  \0 006  \0  \0  \0
> 0001400  \n 321 002 200  \n   `  \n  \0 006  \0  \0  \0  \n 334 001   `
> 0001420  \n  \0 006  \0  \0  \0  \n 347 001   ` 220  \0 006  \0  \0  \0
> 0001440  \n 361 001   `  \n  \0 006  \0  \0  \0  \n 371 001   `  \n  \0
> 0001460 006  \0  \0  \0  \v 002 001   `  \n  \0 006  \0  \0  \0  \v 017
> 0001500 001   ` 220  \0 006  \0  \0  \0  \v   " 002 200 220   `  \n  \0
> 0001520 006  \0  \0  \0  \v   5 001   `  \n  \0 006  \0  \0  \0  \v   ?
> 0001540 001   ` 002  \0 006  \0  \0  \0  \v   M 001   ` 002  \0 006  \0
> 0001560  \0  \0  \v   Z 001   ` 220  \0 006  \0  \0  \0  \v   e 001   `
> 0001600  \n  \0 006  \0  \0  \0  \v   y 001   `  \n  \0 006  \0  \0  \0
> 0001620  \v 215 001   `  \n  \0 006  \0  \0  \0  \v 243 001   ` 220  \0
> 0001640 006  \0  \0  \0  \v 257 001   `  \n  \0 006  \0  \0  \0  \v 277
> 0001660 001   `  \n  \0 006  \0  \0  \0  \v 315 001   `  \n  \0 006  \0
> 0001700  \0  \0  \v 333 001   `  \n  \0 006  \0  \0  \0  \v 355 001   `
> 0001720  \n  \0 006  \0  \0  \0  \v 365 001   `  \n  \0 006  \0  \0  \0
> 0001740  \f 001 001   ` 002  \0 006  \0  \0  \0  \f  \f 001   `  \n  \0
> 0001760 006  \0  \0  \0  \f 031 001   `  \n  \0 006  \0  \0  \0  \f   ,
> 0002000 001   `  \n  \0 006  \0  \0  \0  \f   > 001   ` 002  \0 006  \0
> 0002020  \0  \0  \f   H 002 200  \n   `  \n  \0 006  \0  \0  \0  \f   R
> 0002040 002 200  \n   `  \n  \0 006  \0  \0  \0  \f   d 002 200  \n   `
> 0002060  \n  \0 006  \0  \0  \0  \f   z 002 200  \n   `  \n  \0 006  \0
> 0002100  \0  \0  \f 216 002 200  \n   `  \n  \0 006  \0  \0  \0  \f 242
> 0002120 001   `  \n  \0 006  \0  \0  \0  \f 260 001   `  \n  \0 006  \0
> 0002140  \0  \0  \f 276 001   `  \n  \0 006  \0  \0  \0  \f 316 002 200
> 0002160  \n   `  \n  \0 006  \0  \0  \0  \f 330 001   `  \n  \0 006  \0
> 0002200  \0  \0  \f 342 002 200 002   `  \n  \0 006  \0  \0  \0  \f 355
> 0002220 002 200  \n   `  \n  \0 006  \0  \0  \0  \f 372 002 200  \n   `
> 0002240  \n  \0 006  \0  \0  \0  \r  \f 002 200  \n   `  \n  \0 006  \0
> 0002260  \0  \0  \r   " 002 200  \n   `  \n  \0 006  \0  \0  \0  \r   5
> 0002300 002 200  \n   `  \n  \0 006  \0  \0  \0  \r   C 001   `  \n  \0
> 0002320 006  \0  \0  \0  \r   Y 001   `  \n  \0 006  \0  \0  \0  \r   l
> 0002340 001   `  \n  \0 006  \0  \0  \0  \r   z 001   ` 002  \0 006  \0
> 0002360  \0  \0  \r 210 001   ` 002  \0 006  \0  \0  \0  \r 230 002 200
> 0002400 002   ` 220  \0 006  \0  \0  \0  \r 246 002 200 002   ` 220  \0
> 0002420 006  \0  \0  \0  \r 265 002 200 002   ` 220  \0 006  \0  \0  \0
> 0002440  \r 307 002 200 002   ` 220  \0 006  \0  \0  \0  \r 330 002 200
> 0002460  \n   `  \n  \0 006  \0  \0  \0  \r 343 001   `  \n  \0 006  \0
> 0002500  \0  \0  \r 356 001   ` 002  \0 006  \0  \0  \0 016 006 001   `
> 0002520 002  \0 006  \0  \0  \0 016     001   ` 002  \0 006  \0  \0  \0
> 0002540 016   7 001   ` 002  \0 006  \0  \0  \0 016   M 001   ` 220  \0
> 0002560 006  \0  \0  \0 016   g 001   ` 002  \0 006  \0  \0  \0 016   x
> 0002600 001   ` 002  \0 006  \0  \0  \0 016 206 002 200 002   ` 220  \0
> 0002620 006  \0  \0  \0 016 231 002 200 002   `  \n  \0 006  \0  \0  \0
> 0002640 016 247 001   ` 002  \0 006  \0  \0  \0 016 265 001   `  \n  \0
> 0002660 006  \0  \0  \0 016 304 002 200  \n   `  \n  \0 006  \0  \0  \0
> 0002700 016 323 003 200 002 200  \n   `  \n  \0 006  \0  \0  \0 016 346
> 0002720 002 200 002   `  \n  \0 006  \0  \0  \0 016 371 002 200  \n   `
> 0002740  \n  \0 006  \0  \0  \0 017  \b 001   `  \n  \0 006  \0  \0  \0
> 0002760 017 027 001   ` 220  \0 006  \0  \0  \0 017   % 001   ` 220  \0
> 0003000 006  \0  \0  \0 017   = 001   ` 220  \0 006  \0  \0  \0 017   T
> 0003020 001   ` 002  \0 006  \0  \0  \0 017   i 001   ` 002  \0 006  \0
> 0003040  \0  \0 017   } 001   ` 220  \0 006  \0  \0  \0 017 227 001   `
> 0003060 002  \0 006  \0  \0  \0 017 254 001   ` 002  \0 006  \0  \0  \0
> 0003100 017 313 001   ` 002  \0 006  \0  \0  \0 017 351 001   ` 002  \0
> 0003120 006  \0  \0  \0 020 003 001   ` 002  \0 006  \0  \0  \0 020 035
> 0003140 001   ` 002  \0 006  \0  \0  \0 020   = 001   ` 002  \0 006  \0
> 0003160  \0  \0 020   \ 001   ` 002  \0 006  \0  \0  \0 020   w 001   `
> 0003200 002  \0 006  \0  \0  \0 020 222 001   ` 002  \0 006  \0  \0  \0
> 0003220 020 257 001   ` 002  \0 006  \0  \0  \0 020 313 001   ` 002  \0
> 0003240 006  \0  \0  \0 020 343 001   ` 002  \0 006  \0  \0  \0 020 373
> 0003260 001   ` 002  \0 006  \0  \0  \0 021 031 001   ` 002  \0 006  \0
> 0003300  \0  \0 021   6 001   ` 002  \0 006  \0  \0  \0 021   O 001   `
> 0003320 002  \0 006  \0  \0  \0 021   h 001   ` 002  \0 006  \0  \0  \0
> 0003340 021 206 001   ` 002  \0 006  \0  \0  \0 021 243 001   ` 002  \0
> 0003360 006  \0  \0  \0 021 274 001   ` 002  \0 006  \0  \0  \0 021 325
> 0003400 001   ` 002  \0 006  \0  \0  \0 021 364 001   ` 002  \0 006  \0
> 0003420  \0  \0 022 022 001   ` 002  \0 006  \0  \0  \0 022   , 001   `
> 0003440 002  \0 006  \0  \0  \0 022   F 001   ` 002  \0 006  \0  \0  \0
> 0003460 022   ` 001   ` 002  \0 006  \0  \0  \0 022   y 001   ` 002  \0
> 0003500 006  \0  \0  \0 022 216 001   ` 002  \0 006  \0  \0  \0 022 243
> 0003520 001   ` 002  \0 006  \0  \0  \0 022 273 001   ` 002  \0 006  \0
> 0003540  \0  \0 022 315 001   ` 002  \0 006  \0  \0  \0 022 343 001   `
> 0003560 002  \0 006  \0  \0  \0 022 363 001   ` 002  \0 006  \0  \0  \0
> 0003600 023  \f 001   ` 002  \0 006  \0  \0  \0 023 037 002 200 220   `
> 0003620  \n  \0 006  \0  \0  \0 023   ) 002 200 220   `  \n  \0 006  \0
> 0003640  \0  \0 023   2 002 200 220   `  \n  \0 006  \0  \0  \0 023   ?
> 0003660 001   `  \n  \0 006  \0  \0  \0 023   G 002 200  \n   `  \n  \0
> 0003700 006  \0  \0  \0 023   O 001   `  \n  \0 006  \0  \0  \0 023   Y
> 0003720 001   `  \n  \0 006  \0  \0  \0 023   j 002 200  \n   `  \n  \0
> 0003740 006  \0  \0  \0 023   { 002 200 220   ` 220  \0 006  \0  \0 200
> 0003760   S   e   t   S   o   u   r   c   e  \0   S   e   t   C   o   n
> 0004000   t   r   o   l   S   t   r   i   n   g  \0   S   e   t   C   o
> 0004020   n   s   o   l   e   N   a   m   e  \0   S   e   t   C   o   n
> 0004040   s   o   l   e  \0   S   e   t   A   u   t   o   S   t   a   r
> 0004060   t  \0   S   e   t   N   o   L   a   b   e   l   s  \0   D   o
> 0004100   P   l   a   y   P   a   u   s   e  \0   D   o   P   a   u   s
> 0004120   e  \0   D   o   P   l   a   y  \0   D   o   S   t   o   p  \0
> 0004140   G   e   t   P   o   s   i   t   i   o   n  \0   S   e   t   P
> 0004160   o   s   i   t   i   o   n  \0   G   e   t   L   e   n   g   t
> 0004200   h  \0   G   e   t   P   l   a   y   S   t   a   t   e  \0   G
> 0004220   e   t   S   t   e   r   e   o   S   t   a   t   e  \0   G   e
> 0004240   t   T   i   t   l   e  \0   G   e   t   A   u   t   h   o   r
> 0004260  \0   G   e   t   C   o   p   y   r   i   g   h   t  \0   G   e
> 0004300   t   L   i   v   e   S   t   a   t   e  \0   I   s   Z   o   o
> 0004320   m   e   d  \0   S   e   t   Z   o   o   m   e   d  \0   D   o
> 0004340   N   e   x   t   I   t   e   m  \0   D   o   P   r   e   v   I
> 0004360   t   e   m  \0   D   o   N   e   x   t   E   n   t   r   y  \0
> 0004400   D   o   P   r   e   v   E   n   t   r   y  \0   C   a   n   P
> 0004420   l   a   y   P   a   u   s   e  \0   C   a   n   S   t   o   p
> 0004440  \0   H   a   s   N   e   x   t   E   n   t   r   y  \0   H   a
> 0004460   s   P   r   e   v   E   n   t   r   y  \0   H   a   s   N   e
> 0004500   x   t   I   t   e   m  \0   H   a   s   P   r   e   v   I   t
> 0004520   e   m  \0   S   e   t   V   o   l   u   m   e  \0   S   e   t
> 0004540   M   u   t   e  \0   S   e   t   E   n   a   b   l   e   C   o
> 0004560   n   t   e   x   t   M   e   n   u  \0   G   e   t   E   n   a
> 0004600   b   l   e   C   o   n   t   e   x   t   M   e   n   u  \0   E
> 0004620   n   a   b   l   e   M   e   s   s   a   g   e   B   o   x  \0
> 0004640   S   e   t   E   n   a   b   l   e   M   e   s   s   a   g   e
> 0004660   B   o   x  \0   G   e   t   E   n   a   b   l   e   M   e   s
> 0004700   s   a   g   e   B   o   x  \0   G   e   t   P   a   c   k   e
> 0004720   t   s   T   o   t   a   l  \0   G   e   t   P   a   c   k   e
> 0004740   t   s   R   e   c   e   i   v   e   d  \0   G   e   t   P   a
> 0004760   c   k   e   t   s   O   u   t   O   f   O   r   d   e   r  \0
> 0005000   G   e   t   P   a   c   k   e   t   s   M   i   s   s   i   n
> 0005020   g  \0   G   e   t   P   a   c   k   e   t   s   L   a   t   e
> 0005040  \0   G   e   t   B   a   n   d   w   i   d   t   h   A   v   e
> 0005060   r   a   g   e  \0   G   e   t   B   a   n   d   w   i   d   t
> 0005100   h   C   u   r   r   e   n   t  \0   A   b   o   u   t   B   o
> 0005120   x  \0   E   d   i   t   P   r   e   f   e   r   e   n   c   e
> 0005140   s  \0   S   e   t   S   h   o   w   P   r   e   f   e   r   e
> 0005160   n   c   e   s  \0   H   i   d   e   S   h   o   w   S   t   a
> 0005200   t   i   s   t   i   c   s  \0   I   s   S   t   a   t   i   s
> 0005220   t   i   c   s   V   i   s   i   b   l   e  \0   I   s   D   o
> 0005240   n   e  \0   S   t   a   t   u   s   S   c   a   n   S   t   a
> 0005260   r   t  \0   S   t   a   t   u   s   S   c   a   n   E   n   d
> 0005300  \0   S   t   a   t   u   s   S   c   a   n  \0   S   e   t   A
> 0005320   u   t   o   G   o   T   o   U   R   L  \0   G   e   t   A   u
> 0005340   t   o   G   o   T   o   U   R   L  \0   P   r   o   c   e   s
> 0005360   s   I   d   l   e  \0   S   e   t   C   o   n   t   r   o   l
> 0005400   s  \0   G   e   t   V   e   r   s   i   o   n   I   n   f   o
> 0005420  \0   G   e   t   P   r   e   F   e   t   c   h  \0   S   e   t
> 0005440   P   r   e   F   e   t   c   h  \0   S   e   t   S   h   u   f
> 0005460   f   l   e  \0   G   e   t   S   h   u   f   f   l   e  \0   G
> 0005500   e   t   S   o   u   r   c   e  \0   C   a   n   P   l   a   y
> 0005520  \0   C   a   n   P   a   u   s   e  \0   G   e   t   A   u   t
> 0005540   o   S   t   a   r   t  \0   G   e   t   B   a   c   k   g   r
> 0005560   o   u   n   d   C   o   l   o   r  \0   S   e   t   B   a   c
> 0005600   k   g   r   o   u   n   d   C   o   l   o   r  \0   G   e   t
> 0005620   C   e   n   t   e   r  \0   G   e   t   C   l   i   p   H   e
> 0005640   i   g   h   t  \0   G   e   t   C   l   i   p   W   i   d   t
> 0005660   h  \0   G   e   t   C   o   n   s   o   l   e  \0   G   e   t
> 0005700   E   n   a   b   l   e   D   o   u   b   l   e   S   i   z   e
> 0005720  \0   G   e   t   E   n   a   b   l   e   F   u   l   l   S   c
> 0005740   r   e   e   n  \0   G   e   t   E   n   a   b   l   e   O   r
> 0005760   i   g   i   n   a   l   S   i   z   e  \0   G   e   t   C   o
> 0006000   n   t   r   o   l   s  \0   G   e   t   O   r   i   g   i   n
> 0006020   a   l   S   i   z   e  \0   G   e   t   F   u   l   l   S   c
> 0006040   r   e   e   n  \0   G   e   t   D   o   u   b   l   e   S   i
> 0006060   z   e  \0   G   e   t   M   a   i   n   t   a   i   n   A   s
> 0006100   p   e   c   t  \0   G   e   t   M   u   t   e  \0   G   e   t
> 0006120   N   o   L   a   b   e   l   s  \0   G   e   t   N   u   m   L
> 0006140   o   o   p  \0   G   e   t   S   h   o   w   A   b   o   u   t
> 0006160  \0   G   e   t   S   h   o   w   P   r   e   f   e   r   e   n
> 0006200   c   e   s  \0   G   e   t   S   h   o   w   S   t   a   t   i
> 0006220   s   t   i   c   s  \0   G   e   t   V   o   l   u   m   e  \0
> 0006240   S   e   t   C   e   n   t   e   r  \0   S   e   t   M   a   i
> 0006260   n   t   a   i   n   A   s   p   e   c   t  \0   S   e   t   E
> 0006300   n   a   b   l   e   O   r   i   g   i   n   a   l   S   i   z
> 0006320   e  \0   S   e   t   E   n   a   b   l   e   D   o   u   b   l
> 0006340   e   S   i   z   e  \0   S   e   t   E   n   a   b   l   e   F
> 0006360   u   l   l   S   c   r   e   e   n  \0   S   e   t   D   o   u
> 0006400   b   l   e   S   i   z   e  \0   S   e   t   F   u   l   l   S
> 0006420   c   r   e   e   n  \0   S   e   t   O   r   i   g   i   n   a
> 0006440   l   S   i   z   e  \0   S   e   t   N   o   L   o   g   o  \0
> 0006460   G   e   t   N   o   L   o   g   o  \0   S   e   t   N   u   m
> 0006500   L   o   o   p  \0   S   e   t   S   h   o   w   A   b   o   u
> 0006520   t  \0   S   e   t   S   h   o   w   S   t   a   t   i   s   t
> 0006540   i   c   s  \0   S   e   t   W   a   n   t   K   e   y   b   o
> 0006560   a   r   d   E   v   e   n   t   s  \0   S   e   t   W   a   n
> 0006600   t   M   o   u   s   e   E   v   e   n   t   s  \0   S   e   t
> 0006620   W   a   n   t   E   r   r   o   r   s  \0   G   e   t   W   a
> 0006640   n   t   K   e   y   b   o   a   r   d   E   v   e   n   t   s
> 0006660  \0   G   e   t   W   a   n   t   M   o   u   s   e   E   v   e
> 0006700   n   t   s  \0   G   e   t   W   a   n   t   E   r   r   o   r
> 0006720   s  \0   G   e   t   N   u   m   E   n   t   r   i   e   s  \0
> 0006740   G   e   t   C   u   r   r   e   n   t   E   n   t   r   y  \0
> 0006760   G   e   t   E   n   t   r   y   T   i   t   l   e  \0   G   e
> 0007000   t   E   n   t   r   y   A   u   t   h   o   r  \0   G   e   t
> 0007020   E   n   t   r   y   C   o   p   y   r   i   g   h   t  \0   G
> 0007040   e   t   E   n   t   r   y   A   b   s   t   r   a   c   t  \0
> 0007060   S   e   t   C   a   n   S   e   e   k  \0   G   e   t   C   a
> 0007100   n   S   e   e   k  \0   G   e   t   B   u   f   f   e   r   i
> 0007120   n   g   T   i   m   e   E   l   a   p   s   e   d  \0   G   e
> 0007140   t   B   u   f   f   e   r   i   n   g   T   i   m   e   R   e
> 0007160   m   a   i   n   i   n   g  \0   G   e   t   C   o   n   n   e
> 0007200   c   t   i   o   n   B   a   n   d   w   i   d   t   h  \0   G
> 0007220   e   t   P   r   e   f   e   r   e   d   L   a   n   g   u   a
> 0007240   g   e   I   D  \0   G   e   t   P   r   e   f   e   r   e   d
> 0007260   L   a   n   g   u   a   g   e   S   t   r   i   n   g  \0   G
> 0007300   e   t   U   s   e   r   C   o   u   n   t   r   y   I   D  \0
> 0007320   G   e   t   N   u   m   S   o   u   r   c   e   s  \0   G   e
> 0007340   t   S   o   u   r   c   e   T   r   a   n   s   p   o   r   t
> 0007360  \0   S   e   t   V   i   d   e   o   S   t   a   t   e  \0   G
> 0007400   e   t   V   i   d   e   o   S   t   a   t   e  \0   G   e   t
> 0007420   C   o   n   t   e   x   t   M   e   n   u  \0   S   e   t   C
> 0007440   o   n   t   e   x   t   M   e   n   u  \0   S   e   t   C   o
> 0007460   n   t   e   x   t   M   e   n   u   I   t   e   m  \0   G   e
> 0007500   t   C   o   n   t   e   x   t   M   e   n   u   I   t   e   m
> 0007520  \0   S   e   t   I   m   a   g   e   S   t   a   t   u   s  \0
> 0007540   G   e   t   I   m   a   g   e   S   t   a   t   u   s  \0   G
> 0007560   e   t   L   a   s   t   S   t   a   t   u   s  \0   G   e   t
> 0007600   L   a   s   t   E   r   r   o   r   M   o   r   e   I   n   f
> 0007620   o   U   R   L  \0   G   e   t   L   a   s   t   E   r   r   o
> 0007640   r   U   s   e   r   S   t   r   i   n   g  \0   G   e   t   L
> 0007660   a   s   t   E   r   r   o   r   U   s   e   r   C   o   d   e
> 0007700  \0   G   e   t   L   a   s   t   E   r   r   o   r   R   M   A
> 0007720   C   o   d   e  \0   G   e   t   L   a   s   t   E   r   r   o
> 0007740   r   R   M   A   C   o   d   e   S   t   r   i   n   g  \0   G
> 0007760   e   t   L   a   s   t   E   r   r   o   r   S   e   v   e   r
> 0010000   i   t   y  \0   G   e   t   L   a   s   t   L   e   f   t   B
> 0010020   u   t   t   o   n   D   o   w   n   T   i   m   e   S   t   a
> 0010040   m   p  \0   G   e   t   L   a   s   t   L   e   f   t   B   u
> 0010060   t   t   o   n   D   o   w   n   K   e   y   F   l   a   g   s
> 0010100  \0   G   e   t   L   a   s   t   L   e   f   t   B   u   t   t
> 0010120   o   n   D   o   w   n   X   P   o   s  \0   G   e   t   L   a
> 0010140   s   t   L   e   f   t   B   u   t   t   o   n   D   o   w   n
> 0010160   Y   P   o   s  \0   G   e   t   L   a   s   t   R   i   g   h
> 0010200   t   B   u   t   t   o   n   D   o   w   n   T   i   m   e   S
> 0010220   t   a   m   p  \0   G   e   t   L   a   s   t   R   i   g   h
> 0010240   t   B   u   t   t   o   n   D   o   w   n   K   e   y   F   l
> 0010260   a   g   s  \0   G   e   t   L   a   s   t   R   i   g   h   t
> 0010300   B   u   t   t   o   n   D   o   w   n   X   P   o   s  \0   G
> 0010320   e   t   L   a   s   t   R   i   g   h   t   B   u   t   t   o
> 0010340   n   D   o   w   n   Y   P   o   s  \0   G   e   t   L   a   s
> 0010360   t   L   e   f   t   B   u   t   t   o   n   U   p   T   i   m
> 0010400   e   S   t   a   m   p  \0   G   e   t   L   a   s   t   L   e
> 0010420   f   t   B   u   t   t   o   n   U   p   K   e   y   F   l   a
> 0010440   g   s  \0   G   e   t   L   a   s   t   L   e   f   t   B   u
> 0010460   t   t   o   n   U   p   X   P   o   s  \0   G   e   t   L   a
> 0010500   s   t   L   e   f   t   B   u   t   t   o   n   U   p   Y   P
> 0010520   o   s  \0   G   e   t   L   a   s   t   R   i   g   h   t   B
> 0010540   u   t   t   o   n   U   p   T   i   m   e   S   t   a   m   p
> 0010560  \0   G   e   t   L   a   s   t   R   i   g   h   t   B   u   t
> 0010600   t   o   n   U   p   K   e   y   F   l   a   g   s  \0   G   e
> 0010620   t   L   a   s   t   R   i   g   h   t   B   u   t   t   o   n
> 0010640   U   p   X   P   o   s  \0   G   e   t   L   a   s   t   R   i
> 0010660   g   h   t   B   u   t   t   o   n   U   p   Y   P   o   s  \0
> 0010700   G   e   t   L   a   s   t   L   e   f   t   B   u   t   t   o
> 0010720   n   D   b   l   T   i   m   e   S   t   a   m   p  \0   G   e
> 0010740   t   L   a   s   t   L   e   f   t   B   u   t   t   o   n   D
> 0010760   b   l   K   e   y   F   l   a   g   s  \0   G   e   t   L   a
> 0011000   s   t   L   e   f   t   B   u   t   t   o   n   D   b   l   X
> 0011020   P   o   s  \0   G   e   t   L   a   s   t   L   e   f   t   B
> 0011040   u   t   t   o   n   D   b   l   Y   P   o   s  \0   G   e   t
> 0011060   L   a   s   t   R   i   g   h   t   B   u   t   t   o   n   D
> 0011100   b   l   T   i   m   e   S   t   a   m   p  \0   G   e   t   L
> 0011120   a   s   t   R   i   g   h   t   B   u   t   t   o   n   D   b
> 0011140   l   K   e   y   F   l   a   g   s  \0   G   e   t   L   a   s
> 0011160   t   R   i   g   h   t   B   u   t   t   o   n   D   b   l   X
> 0011200   P   o   s  \0   G   e   t   L   a   s   t   R   i   g   h   t
> 0011220   B   u   t   t   o   n   D   b   l   Y   P   o   s  \0   G   e
> 0011240   t   L   a   s   t   M   o   u   s   e   M   o   v   e   T   i
> 0011260   m   e   S   t   a   m   p  \0   G   e   t   L   a   s   t   M
> 0011300   o   u   s   e   M   o   v   e   K   e   y   F   l   a   g   s
> 0011320  \0   G   e   t   L   a   s   t   M   o   u   s   e   M   o   v
> 0011340   e   X   P   o   s  \0   G   e   t   L   a   s   t   M   o   u
> 0011360   s   e   M   o   v   e   Y   P   o   s  \0   G   e   t   L   a
> 0011400   s   t   K   e   y   D   o   w   n   T   i   m   e   S   t   a
> 0011420   m   p  \0   G   e   t   L   a   s   t   K   e   y   D   o   w
> 0011440   n   K   e   y  \0   G   e   t   L   a   s   t   K   e   y   U
> 0011460   p   T   i   m   e   S   t   a   m   p  \0   G   e   t   L   a
> 0011500   s   t   K   e   y   U   p   K   e   y  \0   G   e   t   L   a
> 0011520   s   t   K   e   y   P   r   e   s   s   T   i   m   e   S   t
> 0011540   a   m   p  \0   G   e   t   L   a   s   t   K   e   y   P   r
> 0011560   e   s   s   K   e   y  \0   S   e   t   A   u   t   h   o   r
> 0011600  \0   S   e   t   T   i   t   l   e  \0   S   e   t   C   o   p
> 0011620   y   r   i   g   h   t  \0   G   e   t   L   o   o   p  \0   S
> 0011640   e   t   L   o   o   p  \0   G   e   t   I   s   P   l   u   s
> 0011660  \0   G   e   t   C   o   n   s   o   l   e   E   v   e   n   t
> 0011700   s  \0   S   e   t   C   o   n   s   o   l   e   E   v   e   n
> 0011720   t   s  \0   G   e   t   D   R   M   I   n   f   o  \0
> 0011736
> 
> So it would also seem that whatever code is at work here does not work
> correctly with symbolic links.

I have this same scenario. symlinks to vlc and java in my 'working' nightly directory.
Landis.
Comment 23 Landis Reed 2012-06-13 23:14:46 PDT
(In reply to Robert Strong [:rstrong] (do not email) from comment #12)
> Only for the stage copy case. We don't want the updater following symlinks
> when applying mar files.

I agree.. don't want working install dir of nightly evaluating (following) symlink
Comment 24 Robert Strong [:rstrong] (use needinfo to contact me) 2012-06-14 03:44:45 PDT
Comment on attachment 632977 [details] [diff] [review]
Patch (v1)

>diff --git a/toolkit/mozapps/update/test/unit/test_0113_general.js b/toolkit/mozapps/update/test/unit/test_0113_general.js
>--- a/toolkit/mozapps/update/test/unit/test_0113_general.js
>+++ b/toolkit/mozapps/update/test/unit/test_0113_general.js
>...
>@@ -303,16 +357,17 @@ function run_test() {
>     logTestInfo("testing last modified time on the apply to directory has " +
>                 "changed after a successful update (bug 600098)");
>     let now = Date.now();
>     let timeDiff = Math.abs(applyToDir.lastModifiedTime - now);
>     do_check_true(timeDiff < MAX_TIME_DIFFERENCE);
>   }
> 
>   checkFilesAfterUpdateSuccess();
>+  checkSymlink();
Shouldn't this only run when IS_UNIX is true?

>   // Sorting on Linux is different so skip this check for now.
>   if (!IS_UNIX) {
>     checkUpdateLogContents(LOG_COMPLETE_SWITCH_SUCCESS);
>   }
> 
>   // This shouldn't exist anyways in background updates, but let's make sure
>   logTestInfo("testing tobedeleted directory doesn't exist");
>   toBeDeletedDir = getApplyDirFile("tobedeleted", true);
>diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
>--- a/toolkit/mozapps/update/updater/updater.cpp
>+++ b/toolkit/mozapps/update/updater/updater.cpp
>@@ -546,37 +546,64 @@ static int ensure_parent_dir(const NS_tc
>         rv = OK;
>       }
>     }
>     *slash = NS_T('/');
>   }
>   return rv;
> }
> 
>+#ifdef XP_UNIX
>+static int ensure_copy_symlink(const NS_tchar *path, const NS_tchar *dest)
>+{
>+  // Copy symlinks by creating a new symlink to the same target
>+  NS_tchar target[MAXPATHLEN + 1] = {NS_T('\0')};
>+  int rv = readlink(path, target, MAXPATHLEN);
>+  if (rv == -1) {
>+    LOG(("ensure_copy: failed to read the link: " LOG_S ", err: %d\n",
s/ensure_copy:/ensure_copy_symlink:/

>+         path, errno));
>+    return READ_ERROR;
>+  }
>+  rv = symlink(target, dest);
>+  if (rv == -1) {
>+    LOG(("ensure_copy: failed to create the new link: " LOG_S ", target: " LOG_S " err: %d\n",
>+         dest, target, errno));
s/ensure_copy:/ensure_copy_symlink:/
Comment 25 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-14 06:30:27 PDT
(In reply to Robert Strong [:rstrong] (do not email) from comment #24)
> Comment on attachment 632977 [details] [diff] [review]
> Patch (v1)
> 
> >diff --git a/toolkit/mozapps/update/test/unit/test_0113_general.js b/toolkit/mozapps/update/test/unit/test_0113_general.js
> >--- a/toolkit/mozapps/update/test/unit/test_0113_general.js
> >+++ b/toolkit/mozapps/update/test/unit/test_0113_general.js
> >...
> >@@ -303,16 +357,17 @@ function run_test() {
> >     logTestInfo("testing last modified time on the apply to directory has " +
> >                 "changed after a successful update (bug 600098)");
> >     let now = Date.now();
> >     let timeDiff = Math.abs(applyToDir.lastModifiedTime - now);
> >     do_check_true(timeDiff < MAX_TIME_DIFFERENCE);
> >   }
> > 
> >   checkFilesAfterUpdateSuccess();
> >+  checkSymlink();
> Shouldn't this only run when IS_UNIX is true?

Right.  Will fix before landing.
Comment 26 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-14 06:37:16 PDT
https://hg.mozilla.org/mozilla-central/rev/12e5dbd60ed8
Comment 27 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-14 08:47:51 PDT
Bill, Landis, I landed a fix which should prevent this issue from happening again a few hours ago.  I have triggered a nightly build from that version, which will be available within a few hours.  Once you upgrade to that build (you can verify that you're running the correct revision by going to about:buildconfig and verifying that you see "Built from https://hg.mozilla.org/mozilla-central/rev/983b91e5aa17"), updating to newer versions should work correctly.  Please let me know if you notice problems after upgrading to the new Nightly.

Thanks for your help and patience while we diagnosed and fixed this issue!
Comment 28 Lukas Blakk [:lsblakk] use ?needinfo 2012-06-15 17:51:15 PDT
Ehsan is this ready for uplift to Aurora? Seems like we'd want to get this in early to make sure it's working on 15.
Comment 29 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-19 15:10:39 PDT
(In reply to Lukas Blakk [:lsblakk] from comment #28)
> Ehsan is this ready for uplift to Aurora? Seems like we'd want to get this
> in early to make sure it's working on 15.

I think so, yes.
Comment 30 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-19 15:11:40 PDT
Comment on attachment 632977 [details] [diff] [review]
Patch (v1)

[Approval Request Comment]
Bug caused by (feature/regressing bug #): bug 307181
User impact if declined: Some of the updates on Linux and Mac could probably fail.
Testing completed (on m-c, etc.): Tested locally, and has baked for a few days on m-c, also the patch includes tests.
Risk to taking this patch (and alternatives if risky): minimal
String or UUID changes made by this patch: none
Comment 31 Alex Keybl [:akeybl] 2012-06-19 19:47:42 PDT
Comment on attachment 632977 [details] [diff] [review]
Patch (v1)

[Triage Comment]
Let's land on Aurora 15 in support of re-enabling the feature.
Comment 32 :Ehsan Akhgari (busy, don't ask for review please) 2012-06-19 20:06:00 PDT
http://hg.mozilla.org/releases/mozilla-aurora/rev/f240c798c27d
Comment 33 Anthony Hughes (:ashughes) [GFX][QA][Mentor] 2012-08-02 11:54:29 PDT
Can someone who was able to reproduce this bug earlier verify if it's fixed for Firefox 15.0 Beta? Installing 15.0b1 and waiting for an update should verify this.

Note You need to log in before you can comment on or make changes to this bug.