Re: Firefox (and other Mozilla products) after ino64

2017-06-01 Thread Gary Jennejohn
On Wed, 31 May 2017 23:27:16 +0200
Dimitry Andric  wrote:

[snip]
> This also applies to other Mozilla products, such as Thunderbird,
> SeaMonkey, and so on.  These should all be rebuilt from scratch under
> ino64.
> 

FYI Seamonkey still works after updating kernel and world to ino64.

-- 
Gary Jennejohn
___
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Firefox (and other Mozilla products) after ino64

2017-05-31 Thread Jeffrey Bouquet


On Wed, 31 May 2017 23:27:16 +0200, Dimitry Andric  wrote:

> Hi,
> 
> Due to the recent ino64 update in 12.0-CURRENT, there have been some
> reports by Firefox port users about crashes.  While I personally have
> not experienced these crashes, as I immediately rebuilt all my ports
> from scratch after the ino64 update, I think can explain why the
> following combination is very likely to have problems:
> 
> * kernel+world after ino64
> * www/firefox package from before ino64
> 
> It is because Firefox's JavaScript engine is doing tricks to get at libc
> structures and functions (via an FFI mechanism), and several structure
> layouts and offsets are hardcoded into its engine at build time.
> 
> For instance, here is the place where the engine determines the offset
> of struct dirent's d_name field:
> 
>   
> https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l648
> 
> Further down in the file, several offsets of fields in struct stats are
> similarly determined:
> 
>   
> https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l677
> 
> Now, since ino64 changed quite a number of structure layouts, including
> struct dirent, struct stat, and others, such offsets determined in the
> past will no longer be valid!
> 
> It is pretty likely that Firefox will attempt to access these fields,
> finding bogus values, or simply reading invalid memory, and crashing
> because of this.  Or at the least, the behavior will be unstable.
> 
> This also applies to other Mozilla products, such as Thunderbird,
> SeaMonkey, and so on.  These should all be rebuilt from scratch under
> ino64.
> 
> -Dimitry


What of machines where for some reason ports do not always build? [ for 
instance, 
ones with past workarounds for a
failed installworld...  ]  that still are in critical use daily? And,or where 
the
system has been installed for so long without reinstall that some ports 
segfault unless 'pkg lock'  ... and not usually upgraded... and/or thus using
binaries from backup... 

  Are upstream repositories to have those [ browser, email]  ports?  For 
instance, here iridium I cannot get to build... 
___
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Firefox (and other Mozilla products) after ino64

2017-05-31 Thread Dimitry Andric
Hi,

Due to the recent ino64 update in 12.0-CURRENT, there have been some
reports by Firefox port users about crashes.  While I personally have
not experienced these crashes, as I immediately rebuilt all my ports
from scratch after the ino64 update, I think can explain why the
following combination is very likely to have problems:

* kernel+world after ino64
* www/firefox package from before ino64

It is because Firefox's JavaScript engine is doing tricks to get at libc
structures and functions (via an FFI mechanism), and several structure
layouts and offsets are hardcoded into its engine at build time.

For instance, here is the place where the engine determines the offset
of struct dirent's d_name field:

  
https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l648

Further down in the file, several offsets of fields in struct stats are
similarly determined:

  
https://hg.mozilla.org/mozilla-central/file/tip/dom/system/OSFileConstants.cpp#l677

Now, since ino64 changed quite a number of structure layouts, including
struct dirent, struct stat, and others, such offsets determined in the
past will no longer be valid!

It is pretty likely that Firefox will attempt to access these fields,
finding bogus values, or simply reading invalid memory, and crashing
because of this.  Or at the least, the behavior will be unstable.

This also applies to other Mozilla products, such as Thunderbird,
SeaMonkey, and so on.  These should all be rebuilt from scratch under
ino64.

-Dimitry



signature.asc
Description: Message signed with OpenPGP