Última versão do VBA-M

Iniciado por Sergio Benjamim, 20 de Março de 2014, 17:50

tópico anterior - próximo tópico

Sergio Benjamim

#30
Encontrei outra coisa curiosa, no menu File --> Open recent: se você abrir mais de 10 ROM's, você terá acesso somente às 10 primeiras por esse menu. As outras não irão aparecer. Essa lista não devia girar, conforme você vai abrindo jogos diferentes?

Não parece ser problema do Unity, testei com e sem o workaround do env.

---

Eu consigo reproduzir a perda de configuração aqui no 13.10. Mas ao colocar o workaround do env, ele pára com isso.

---

Eu ia ver o Snes9x, mas por algum motivo ele está travando.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Usei o workaround do env no snes9x, e ele voltou a funcionar!  :o

Lembro que no snes9x tinha um problema com o File --> Open recent, sempre abria a primeira ROM, independente se você tentasse abrir outro da lista. Já me deparei com esse problema no Inkscape também.

Esse global menu, não sei como, está alterando o comportamento dos programas, e não é só de 1 maneira. No vbam você perde as configurações, no snes9x ele trava ao tentar carregar uma ROM ou alterar uma opção.

Vou testar mais um pouco.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

#32
Entao Sergio, esse problema dos menus ja e conhecido ha algum tempo.

A canonical as vezes fazem algumas mudanças que prejudicam os programas em nome da estetica, vamos dizer assim, primeiro "congelaram" o menu superior, a barra de cima do Ubuntu no 11.04, onde o pessoal colocava os applets e a maioria deixou de funcionar, depois vem Unity com menu global, os menus eram agora, somente na parte superior da janela, agora no 14.04 o pessoal vem com essa, que agora os menus vao ser na barra e na janela tbm, agora veja, eu nao sou programador, mas os programas que nao tem uma comunidade ativa em torno dele fica a ver navios, porque vai parar de funcionar adequadamente se nao houver nenhuma intervenção e uma adequação para funcionar no Unity.

Agora vc tem que ver, se esta usando o Xubuntu que nao usa menu global e sem compiz e o aplicativo nao apresentar erro, na minha opiniao apenas, o negocio do File --> Open recent: se você abrir mais de 10 ROM's e o comportamento do programa, nao e um bug, na minha opiniao.

Assim como nao acho que e bug a forma do aplicativo salvar as configuraçoes na pasta oculta do programa.

O problema e que o menu confuso ou com erro gera problemas na execução do programa, e pode levar ate um crash, falha de segmentação, esses erros bizarros que vc viu.

Eu preciso compilar aqui para ver com que funciona.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Estou conseguindo reproduzir a perda de configuração no Linux Mint 16 Mate, mas é difícil repetir, diria algo em torno de 1 para 5 tentativas ou mais. Então tem um problema no emulador também.

Pelo que andei testando o Unity potencializa esse problema no 13.10.

Você falou dessa questão da Canonical mudar as coisas... tem que reportar esse tipo de problema. Porque não tem como você ficar aplicando workaround só por causa do Unity, é inviável. Eu ia aplicar um patch, mas deixa quieto.

Em relação às 10 ROM's estáticas no File --> open recent, eu vou perguntar para a equipe do vba-m se era para ser assim mesmo. E também a questão de salvar as configurações no fechamento.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

#34
Jorge Castro http://launchpad.net/~jorge

Tenta falar com ele sobre o problema e como reportar o bug no local correto.

*edit

Talvez ele possa te dar uma visao geral desse problema nos menus, ja que e uma coisa recorrente em varios aplicativos.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

platao

#35
Hehehehe

http://img208.imageshack.us/img208/7724/j5tq.png



Ate agora nao vi nada errado(ainda) ; )

TEstando....

http://img59.imageshack.us/img59/6387/e95j.png




Aqui segui o procedimento;

Instalei as dependencias;

sudo apt-get install build-essential subversion cmake zlib1g-dev libpng12-dev libopenal-dev libsdl1.2-dev libgtkmm-2.4-dev libgtkglextmm-
x11-1.2-dev libavformat-dev libswscale-dev libwxgtk2.8-dev imagemagick wx-common libsfml-dev

e-dev já é a versão mais nova.
subversion já é a versão mais nova.
cmake já é a versão mais nova.
Os pacotes extra a seguir serão instalados:
 libatkmm-1.6-dev libcairomm-1.0-dev libglibmm-2.4-dev libpangomm-1.4-dev
 libsigc++-2.0-dev libwxbase2.8-0 libwxbase2.8-dev libwxgtk2.8-0
 wx2.8-headers
Pacotes sugeridos:
 imagemagick-doc autotrace curl enscript ffmpeg gimp gnuplot grads hp2xx
 html2ps libwmf-bin mplayer povray radiance texlive-base-bin transfig
 ufraw-batch libatkmm-1.6-doc libcairomm-1.0-doc libglibmm-2.4-doc
 libgtkmm-3.0-dev libgtkmm-2.4-doc libsigc++-2.0-doc wx2.8-doc
 libgnomeprintui2.2-0
Os NOVOS pacotes a seguir serão instalados:
 libatkmm-1.6-dev libcairomm-1.0-dev libglibmm-2.4-dev libgtkmm-2.4-dev
 libpangomm-1.4-dev libsigc++-2.0-dev libwxbase2.8-0 libwxbase2.8-dev
 libwxgtk2.8-0 libwxgtk2.8-dev wx-common wx2.8-headers
Os pacotes a seguir serão atualizados:
 imagemagick
1 pacotes atualizados, 12 pacotes novos instalados, 0 a serem removidos e 628 não atualizados.
É preciso baixar 7.554 kB de arquivos.
Depois desta operação, 32,1 MB adicionados


depois;

svn co https://svn.code.sf.net/p/vbam/code/trunk      para a versao VBA-M 1.8.0-SVN1230

depois;

cmake .                                                              com ponto mesmo

e

make

compilou tudo certinho, depois copiei a pasta trunk para a minha isntalação padrao do 12.04(eu compilei em maquina virtual com 12.04 tbm) e foi so isntalar uma dependencia libgtkglext1 (1.2.0-2fakesync1) e libgtkglextmm-x11-1.2-0 (1.2.0-4.1) na minha maquina com 12.04.4 e esta funcionando.

Por enquanto nao perdeu as configuraçoes, nao crashou e nao deu nenhum erro rodando pelo terminal com o env UBUNTU_MENUPROXY= , parece que esta suave.....vamos ver.......

A questao do save pelo que eu entendi, ele nao mostra nenhum save ao vc ligar o emulador, so mostra o save quando vc carrega a rom, ai ele mostra o save e da a opção de load.

Nao aconteceu nada aqui por enquanto, nem segment_fault, nem erro ao rodar as roms recentes pelo menu das 10 recentes, nao crashou, nao eu nenhum aviso rodando pelo terminal, nao sei o que dizer, esta tudo funcionando bem. Eu vou manter assim no 12.04 e com o env ubuntu_menuproxy e sem compiz ativo(somente com o openbox) e testar um pouco...vamos ver no que da.....
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

Eu reportei o problema do gvbam no Unity (que tem que usar o workaround do env), dá uma olhada:

Unity global menu "delays" actions in a gtk2 app
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Platao, no meu branch do vbam, eu deletei quase tudo relacionado ao windows e configurações de IDE's. Faz mais sentido, já que vou tentar mandar para o repo do debian (ou universe...). Só instalar o bzr e rodar bzr branch lp:~sergio-br2/vbam/fixes

Não sei se vai afetar algo, provavelmente não. Tenho que compilar e testar.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Uma coisa que notei agora, só consigo reproduzir a perda de configuração do emulador no ubuntu 64 bits. No 32 bits até dá segmentation fault as vezes, mas há perda de configuração.

Talvez o segmentation fault e as perdas de configuração sejam dois problemas isolados.

Outra coisa: com o workaround do env, ao fechar o emulador ele continua lá na memória, é possível ver no Monitor do Sistema. Chega uma hora que há vários. Só fecha se eu matar o processo.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

Entao o segment fault e um erro da aplicação mesmo, e nao do menu ou alguma coisa relacionada, o que e um erro grave do executavel que chega uma hora que ele para de funcionar, e isso explica tbm ele ficar na memoria, talvez como um programa zumbi aparecendo no monitor do sistema, isso pode estar alem do nosso alcance.

Seria interessante se pudermos disponibilizar uma versao debug dele entende? Se fizermos um PPA ou adicionarmos no seu PPA uma versao debug alguem que tem mais conhecimento de programação pode analizar e consertar o problema.

Notei que ele da essas falhas as vezes sim, mas e muito exporadico, as vezes ele da crash sem motivo aparente, coisa tipica de versao em desenvolvimento.

Vc conseguiu falar com os desenvolvedores? vou ver se essa semana dou mais uma olhada e quem sabe com uma versao debug pegamos onde esta dando o erro e vc passa para para o mantenedor.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

#40
Platao, na verdade ele já tem o debug habilitado, dá uma olhada no CMakeList.txt.

option( ENABLE_DEBUGGER "Enable the debugger" ON )

Ahh, consegui falar com os desenvolvedores sim, vez ou outra entro no #vba-m

Postei o resultado do debug aqui: sourceforge.net/p/vbam/bugs/147/

---

Acabei de pegar aqui do irc, para compilar com suporte à debug é necessário usar o cmake com esses parâmetros:


cmake -DCMAKE_BUILD_TYPE=Debug
make


Olha que legal a saída:

gdb ./gvbam
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/sergio/Projects/lp/fixes-test/gvbam...done.
(gdb) run
Starting program: /home/sergio/Projects/lp/fixes-test/./gvbam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe81b3700 (LWP 16071)]
[New Thread 0x7fffe79b2700 (LWP 16072)]
[New Thread 0x7fffe71b1700 (LWP 16073)]
[New Thread 0x7fffe69b0700 (LWP 16074)]
[Thread 0x7fffe69b0700 (LWP 16074) exited]
[New Thread 0x7fffe69b0700 (LWP 16075)]
[New Thread 0x7fffe5b32700 (LWP 16076)]
[New Thread 0x7fffe5114700 (LWP 16077)]
[New Thread 0x7fffe4913700 (LWP 16078)]
[New Thread 0x7fffd1040700 (LWP 16079)]
[Thread 0x7fffd1040700 (LWP 16079) exited]
[Thread 0x7fffe4913700 (LWP 16078) exited]
[Thread 0x7fffe69b0700 (LWP 16075) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff48ebc2b in malloc_consolidate (av=av@entry=0x7ffff4c2d740 <main_arena>)
   at malloc.c:4094
4094 malloc.c: No such file or directory.
(gdb) bt full
#0  0x00007ffff48ebc2b in malloc_consolidate (av=av@entry=0x7ffff4c2d740 <main_arena>)
   at malloc.c:4094
       fb = <optimized out>
       maxfb = 0x7ffff4c2d790 <main_arena+80>
       p = 0x132380f
       nextp = 0x0
       unsorted_bin = 0x7ffff4c2d798 <main_arena+88>
       first_unsorted = <optimized out>
       nextchunk = 0x1326b0f
       size = 13056
       nextsize = 0
       prevsize = <optimized out>
       nextinuse = <optimized out>
       bck = 0x7fff000005ff00
       fwd = 0x20000000200
       __func__ = "malloc_consolidate"
#1  0x00007ffff48ed0e1 in _int_malloc (av=0x7ffff4c2d740 <main_arena>, bytes=2048)
   at malloc.c:3379
       nb = 2064
       idx = <optimized out>
       bin = <optimized out>
       victim = <optimized out>
       size = <optimized out>
       victim_index = <optimized out>
       remainder = <optimized out>
       remainder_size = <optimized out>
       block = <optimized out>
       bit = <optimized out>
       map = <optimized out>
       fwd = <optimized out>
       bck = <optimized out>
       errstr = 0x0
       __func__ = "_int_malloc"
#2  0x00007ffff48ef4d0 in __GI___libc_malloc (bytes=2048) at malloc.c:2859
       ar_ptr = 0x7ffff4c2d740 <main_arena>
       victim = 0x7fff000005ff00
       __func__ = "__libc_malloc"
#3  0x00007ffff58b9e6f in g_realloc () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#4  0x00007ffff58d3254 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#5  0x00007ffff58d32a2 in g_string_sized_new () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#6  0x00007ffff58aa5e3 in g_io_channel_write_chars ()
  from /lib/x86_64-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#7  0x00007ffff6589ceb in Glib::IOChannel::write(char const*, long, unsigned long&) ()
  from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
No symbol table info available.
#8  0x00007ffff6589d3d in Glib::IOChannel::write(Glib::ustring const&) ()
  from /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
No symbol table info available.
#9  0x00000000004583f7 in VBA::Config::File::vSave (this=0xa05748, _rsFile=...)
   at /home/sergio/Projects/lp/fixes-test/src/gtk/configfile.cpp:222
       sName = {static npos = <optimized out>,
         _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x9e2918 "[Directories]\n"}}
       poSection = {_M_node = 0xa31870}
       poFile = {pCppObject_ = 0xa39fa0}
#10 0x000000000048b401 in VBA::Window::vSaveConfig (this=0xa056a0, _rsFile=...)
   at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:747
No locals.
#11 0x00000000004871f4 in VBA::Window::~Window (this=0xa056a0, __in_chrg=<optimized out>,
   __vtt_parm=<optimized out>)
   at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:339
No locals.
#12 0x000000000048751a in VBA::Window::~Window (this=0xa056a0, __in_chrg=<optimized out>,
   __vtt_parm=<optimized out>)
   at /home/sergio/Projects/lp/fixes-test/src/gtk/window.cpp:347
No locals.
#13 0x000000000045ac27 in main (argc=1, argv=0x7fffffffe3a8)
   at /home/sergio/Projects/lp/fixes-test/src/gtk/main.cpp:123
       bShowVersion = false
       oKit = <incomplete type>
       oGroup = <incomplete type>
       sGtkBuilderFile = {static npos = <optimized out>,
         _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x9e23b8 "src/gtk/ui/vbam.ui"}}
       listRemaining = {<std::_Vector_base<Glib::ustring, std::allocator<Glib::ustring> >> = {
           _M_impl = {<std::allocator<Glib::ustring>> = {<__gnu_cxx::new_allocator<Glib::ustring>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
             _M_end_of_storage = 0x0}}, <No data fields>}
       poXml = {pCppObject_ = 0x9e2610}
---Type <return> to continue, or q <return> to quit---
       poWindow = 0xa056a0
       oContext = <incomplete type>
       oVersion = <incomplete type>
       oFileName = <incomplete type>


Fica mais bonito e humano lá no sourceforge.

Mas ainda falta simbolos, como os dos libglib-2.0.so.0 e libglibmm-2.4.so.1. Tem um pacote chamado libglibmm-2.4-dbg, o outro estou procurando.

---

Achei, libglib2.0-0-dbg, vamos ver se funciona.

---

Tem que instalar o libsdl1.2-dbg e o libpulse0-dbg também.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

#41
Resumindo, para quem quiser debugar e auxiliar os desenvoldedores, só seguir os passos seguintes. Lembrando que o debug tem que estar ativo no arquivo CMakeLists.txt (geralmente vem ativo):

option( ENABLE_DEBUGGER "Enable the debugger" ON )

Baixar o source do vba-m, lá do sourceforge: sourceforge.net/p/vbam/code/HEAD/tarball e descompactar em alguma pasta. Depois use o comando cd para chegar até a pasta descompactada, e:

cd ~/caminho-para-seu-diretorio-do-vbam/vbam-code-1230-trunk/
cmake -DCMAKE_BUILD_TYPE=Debug
make


Após isso, instale os pacotes de debug:

sudo apt-get install libglibmm-2.4-dbg libglib2.0-0-dbg libsdl1.2-dbg libpulse0-dbg

Agora você vai rodar o gdb:

gdb ./gvbam

O terminal vai alterar um pouco, o cursor vai ficar piscando após um (gdb), agora abra o emulador com o comando run:

run

Mexa no emulador, tente reproduzir o erro que está tendo. No meu caso, é a perda de configuração e Segmentation fault. Após o crash, rode o comando bt full:

bt full

Copie e cole no report de bug as informações. Após isso, pode tentar rodar o emulador de novo com o comando run, ou saia com quit:

quit

A ideia é essa se quiser depurar algum programa (agora preciso aprender o que são todas as informações que o debug fornece :D ).

O bgk (um dos desenvolvedores do vba-m) vai executar o gvbam sob o valgrind, parece que é uma ferramenta que pode detectar automaticamente muitos bugs de gerenciamento de memória e de encadeamento (threading bugs). Cara, a gente não sabe de nada mesmo...  :o

Sabe de nada inocente!  ;D
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

Sergio Benjamim

Agora o VBA-M tem versão para o ubuntu 12.04 e 13.10, e consegui empacotar o vbam-sdl (vba-m sem front-end, usado no terminal).

Cara, fantástico essa ideia de recipe, eu criei um para fazer os pacotes automaticamente: code.launchpad.net/~sergio-br2/+recipe/vbam-fixes

Criei outro para pegar automaticamente as mudanças do upstream e aplicar no meu branch fixes, mas não deu certo: code.launchpad.net/~sergio-br2/+recipe/vbam-daily. O problema foi eu excluir várias coisas do código fonte do vba-m, relacionado ao rWindows. A equipe do vba-m atualizou um arquivo do src/win32, e como essa pasta não tinha mais no meu branch, deu problema na hora de fazer o merge.
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !

platao

Algum progresso no VBA? Vejo que tem algumas atualizaçoes no repositorio.
\\\\\\\\Apostilas Dicas e Guias do Ubuntu\\\\\\\\\> http://ubuntuforum-br.org/index.php/topic,79368.msg440997.html#msg440997

Sergio Benjamim

#44
Citação de: platao online 20 de Maio de 2014, 16:29
Algum progresso no VBA? Vejo que tem algumas atualizaçoes no repositorio.

O repositório do sourceforge ou o meu do launchpad? As atualizações do launchpad tem coisa boba apenas, como mais tamanhos de ícones e correção de algumas coisas do debian/.

Conversando com os dev no irc, descobrimos que o segmentation fault que o vba-m está tendo se deve aos commits 1227 ao 1229. Se você voltar para o commit 1226, o vba-m pára de perder suas configurações ao fechar!
É novo no Ubuntu? Já leu o Ubuntu – Guia do Iniciante 2.0 ?
Experimente o Xubuntu 14.04 !