[FUG-BR] Thunderbird 16, 17 e firefox 17 crashes

Otacílio otacilio.neto em bsd.com.br
Segunda Dezembro 3 23:52:22 BRST 2012


On 03/12/2012 21:50, Paulo Olivier Cavalcanti wrote:
> Em 03/12/2012 20:49, Otacílio escreveu:
>> On 03/12/2012 18:24, Paulo Olivier Cavalcanti wrote:
>>>
>>> Lá vou eu de novo tentar te salvar. Pelo jeito só eu e você usamos o
>>> Freebsd como desktop Otacílio, risos. Não entendo porque está dando
>>> segfault na sua máquina... eu compilei o Thunderbird e o Firefox 17 sem
>>> qualquer problema usando as configurações padrão e o GCC46. Quando clico
>>> no "+" a aba é aberta normalmente. Pelo que vi parece que é um bug no
>>> libxul, já experimentou atualizar para a versão mais recente (10.0.9)?
>>>
>> Não, mas no que eu entendo o thunderbird e o firefox usam uma versão da
>> libxul que é compilada e instalada junto com o código deles. Olhe só:
>>
>> [ota em squitch ota]$ pkg_info -L thunderbird-15.0.1 | grep libxul
>> /usr/local/lib/thunderbird/libxul.so
>> [ota em squitch ota]$
>>
>> No arquivo .mozconfig troquei o
>> --disable-debug-symbols por
>> --enable-debug-symbols
>>
>> removi o --enable-strip e o --enable-install-strip mas ainda assim
>> quando carreguei o programa no gdb ele informa que não existe a tabela
>> de símbolos.
>>
>> Mais ainda, fiz um diff da versão 15 para a versão 17 e no destrutor que
>> aparece na mensagem de erro não tem nenhum código.
>>
>> Eu começo a pensar que é um problema do compilador, já que estou usando
>> o gcc da base.
>
> Perdoe a minha ignorância, mas em que adiantaria habilitar o debug
> symbols? Imagino que tenha a ver com rastrear o que está causando o bug?
>

Com o debug symbols eu posso depurar o código fonte adicionando 
breakpoint, e acompanhando a execução linha-a-linha do código em C. Aí 
eu chegaria no cão dos infernos que está causando o core dump.

Por exemplo, compile esse programa:

#include <stdio.h>

int main(){
	printf("Hello World\n");
}

Com o comando

cc  -o hello hello.c

Depois abra com o ddd

ddd hello

Você vai ver que o código fonte não é exibido, mas se compilar com um

cc -g -ggdb -o hello hello.c

e rodar um

ddd hello

Você pode depurar o código fonte diretamente durante  a execução.

> E, olha, eu já tentei compilar o Firefox e Thunderbird com três ou
> quatro compiladores diferentes, o que tive melhor resultado foi o gcc46.
> Mais especificamente esta:
>
> paulo em amd> gcc46
> --version
> gcc46 (FreeBSD Ports Collection) 4.6.4 20120928 (prerelease)
> Copyright (C) 2011 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> Com o gcc da base até ia, mas o programa ficava lento. Com a versão
> 4.6.3 em diante o desempenho foi drasticamente superior (com a versão
> 4.8 dá pau, não tentei com a 4.7).
>
> Experimente.
>

Experimentei com o 4.6. Deu este erro:


Downloading http://pysqlite.googlecode.com/files/pysqlite-2.6.3.tar.gz
Processing pysqlite-2.6.3.tar.gz
Running pysqlite-2.6.3/setup.py -q bdist_egg --dist-dir 
/tmp/easy_install-qCojdk/pysqlite-2.6.3/egg-dist-tmp-BcIup0
build/temp.freebsd-8.3-RELEASE-p4-i386-2.7/src/module.o(.text.__i686.get_pc_thunk.bx+0x0)/usr/bin/ld: 
Dwarf Error: mangled line number section.
: In function `__i686.get_pc_thunk.bx':
: multiple definition of `__i686.get_pc_thunk.bx'
/usr/lib/crtbeginS.o(.gnu.linkonce.t.__i686.get_pc_thunk.bx+0x0): first 
defined here
error: Setup script exited with error: command 'cc' failed with exit 
status 1
Traceback (most recent call last):
   File 
"/usr/ports/mail/thunderbird/work/comm-release/mozilla/build/virtualenv/populate_virtualenv.py", 
line 69, in <module>
     populate_virtualenv(sys.argv[1], sys.argv[2])
   File 
"/usr/ports/mail/thunderbird/work/comm-release/mozilla/build/virtualenv/populate_virtualenv.py", 
line 42, in populate_virtualenv
     package[2:])
   File 
"/usr/ports/mail/thunderbird/work/comm-release/mozilla/build/virtualenv/populate_virtualenv.py", 
line 63, in call_setup
     raise Exception('Error installing package: %s' % directory)
Exception: Error installing package: 
/usr/ports/mail/thunderbird/work/comm-release/mozilla/testing/mozbase/mozprofile
configure: error: ./configure failed for mozilla
===>  Script "configure" failed unexpectedly.
Please report the problem to gecko em FreeBSD.org [maintainer] and attach the
"/usr/ports/mail/thunderbird/work/comm-release/config.log" including the
output of the failure of your make command. Also, it might be a good idea to
provide an overview of all packages installed on your system (e.g. a
/usr/sbin/pkg_info -Ea).
*** Error code 1

Stop in /usr/ports/mail/thunderbird.
*** Error code 1

Stop in /usr/ports/mail/thunderbird.


O que eu estou puto é que para a adicionar os debug symbols, não é da 
forma padrão -g -ggdb. Aí você tem sempre que estar reaprendendo a fazer 
a roda. Depois que adicionei as coisas todas, em uma máquina de 2GB de 
ram usou os 2GB + 3GB de swap e no fim os symbols somem...


Mais detalhes sobre a lista de discussão freebsd