Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

absence of ../hash/mameROMs.xml.gz causing NPEs (I think). #3

Closed
victort opened this issue May 10, 2013 · 21 comments
Closed

absence of ../hash/mameROMs.xml.gz causing NPEs (I think). #3

victort opened this issue May 10, 2013 · 21 comments

Comments

@victort
Copy link

victort commented May 10, 2013

hi,

having this problem on both Raspbian (ARM6) and Debian (x86_64).

after submitting MAMEhub creds at login screen, getting an error dialog reading:

An exception has occured and has been logged. Returning to login screen

in ErrorLog.txt is the message:

java.io.FileNotFoundException: ../hash/mameROMs.xml.gz (No such file or directory)
com.mamehub.client.audit.GameAuditor.audit(GameAuditor.java:222)
com.mamehub.client.audit.GameAuditor.run(GameAuditor.java:105)
java.lang.Thread.run(Thread.java:679)

And, the exception as seen from the terminal (on Debian/x86_64):

[19:59:15,543  INFO RpcEngine.java:397] executing login request 
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
SERVER RECEIVED: this is a test
[19:59:15,979  INFO UDPReflectionServer.java:68] Shutting down
[19:59:17,679  INFO UDPReflectionServer.java:54] Server shutting down
jar:file:/home/mprov/Bombing_Ground/mamehub/MAMEHub/Client/target/MAMEHubClient-0.0.1-SNAPSHOT.jar!/MAMEHub.png
BUFFERED IMAGE: 248 248
[19:59:18,767  INFO MainFrame.java:392] Adding mainframe window
[19:59:18,785  INFO MainFrame.java:1329] UPDATED WITH 0 (0) VALUES
CHAT STATUS CHANGED: ONLINE
[19:59:19,042  INFO PortOpener.java:89] Remote device updated: D-Link Corporation DNS-343 103
[19:59:19,043  INFO PortOpener.java:89] Remote device updated: D-Link Corporation DNS-343 103
[19:59:19,043  INFO PortOpener.java:89] Remote device updated: D-Link Corporation DNS-343 103
[19:59:19,043  INFO PortOpener.java:89] Remote device updated: D-Link Corporation DNS-343 103
[19:59:19,043  INFO PortOpener.java:89] Remote device updated: D-Link Corporation DNS-343 103
May 8, 2013 7:59:20 PM com.mamehub.client.utility.ClientDatabaseEngine <init>
INFO: CREATING NEW DATABASE ENGINE
May 8, 2013 7:59:20 PM com.mamehub.client.utility.ClientDatabaseEngine <init>
INFO:  db dir: .//MAMEHubAuditDB6 db file.//MAMEHubAuditDB6/db
[19:59:20,939  INFO HashScanner.java:220] Cleaing old reverse-map
[19:59:20,996  INFO HashScanner.java:291] Starting scan..
[19:59:20,997  INFO HashScanner.java:300] Finished reading file headers.
[19:59:20,997  INFO HashScanner.java:319] Finished scanning
[19:59:20,997  INFO HashScanner.java:322] Committed all changes
[19:59:20,997  INFO GameAuditor.java:175] Parsing MAME roms
May 8, 2013 7:59:21 PM com.mamehub.client.utility.ClientDatabaseEngine wipeDatabase
INFO: WIPING OLD DATABASE
May 8, 2013 7:59:21 PM com.mamehub.client.utility.ClientDatabaseEngine wipeDatabase
INFO: ./MAMEHubAuditDB6/db.t
May 8, 2013 7:59:21 PM com.mamehub.client.utility.ClientDatabaseEngine wipeDatabase
INFO: ./MAMEHubAuditDB6/db.d.0
May 8, 2013 7:59:21 PM com.mamehub.client.utility.ClientDatabaseEngine wipeDatabase
INFO: ./MAMEHubAuditDB6/db.i.0
java.io.IOException: java.io.FileNotFoundException: ../hash/mameROMs.xml.gz (No such file or directory)
at com.mamehub.client.audit.GameAuditor.audit(GameAuditor.java:222)
at com.mamehub.client.audit.GameAuditor.run(GameAuditor.java:105)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.io.FileNotFoundException: ../hash/mameROMs.xml.gz (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at java.io.FileInputStream.<init>(FileInputStream.java:96)
at com.mamehub.client.audit.RomParser.process(RomParser.java:74)
at com.mamehub.client.audit.GameAuditor.audit(GameAuditor.java:176)
... 2 more
java.lang.NullPointerException
at com.mamehub.client.utility.ClientDatabaseEngine.getOrCreateHashMap(ClientDatabaseEngine.java:197)
at com.mamehub.client.audit.GameAuditor.getMameRomInfoMap(GameAuditor.java:331)
at com.mamehub.client.MameHubEngine.getMameRomInfo(MameHubEngine.java:231)
at com.mamehub.client.MainFrame.getGameDescription(MainFrame.java:1335)
at com.mamehub.client.MainFrame.updateJoinGameList(MainFrame.java:1312)
at com.mamehub.client.MainFrame.<init>(MainFrame.java:922)
at com.mamehub.client.login.LoginDialog.loginComplete(LoginDialog.java:374)
at com.mamehub.client.login.LoginDialog$6.actionPerformed(LoginDialog.java:305)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4649)[19:59:21,221  INFO RpcEngine.java:211] RPC ENGINE TERMINATED
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4475)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2587)
at java.awt.Component.dispatchEvent(Component.java:4475)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:675)
at java.awt.EventQueue.access$300(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:634)
at java.awt.EventQueue$2.run(EventQueue.java:632)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$3.run(EventQueue.java:648)
at java.awt.EventQueue$3.run(EventQueue.java:646)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:645)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
[19:59:21,348  INFO UDPReflectionServer.java:29] SERVER: Waiting for packet
[19:59:21,348  INFO LoginDialog.java:89] Adding intro dialog
[19:59:23,800  INFO MainFrame.java:400] Removing mainframe window
@victort
Copy link
Author

victort commented May 10, 2013

happens with both openjdk-7-jre and sun-java6-jre

@jeremyblow
Copy link

Same issue for me on Raspberry Pi. Clean install.

wheezy-armel
sun jdk-7u21-linux-arm
libswt-gtk-3-jni
apache-maven-3.0.5

But mostly posting this just to say I'm on a Raspberry Pi. ... No.. I'm ona boaaaaat.

(load average: 2.49, 3.94, 3.64)

@MisterTea
Copy link
Owner

Thanks for finding this out. If you git pull and then go to the Client directory and run

mvn package

and then

java -jar target/MAMEHubClient-0.0.1-SNAPSHOT.jar

it should be able to read the hashes in the hash directory.

@jeremyblow
Copy link

Found the hash dir and missing mameROMs.xml.gz in the http://10ghost.net/MAMEHubDownloads/MAMEHub2_Linux32_0.6.zip package, which I imagine is a stable release. Is what is here on github a fork, current dev version, or other?

@MisterTea
Copy link
Owner

Its a copy :-D
On May 10, 2013 12:02 AM, "Jeremy Blow" notifications@github.com wrote:

Found the hash dir and missing mameROMs.xml.gz in the
http://10ghost.net/MAMEHubDownloads/MAMEHub2_Linux32_0.6.zip package,
which I imagine is a stable release. Is what is here on github a fork,
current dev version, or other?


Reply to this email directly or view it on GitHubhttps://github.com//issues/3#issuecomment-17707051
.

@jeremyblow
Copy link

Heya MisterTea...

Just wanted to report (in this dead and closed issue) that your commit resolved that issue. And, also, the lobby finally loaded on my Raspberry Pi.... but took 2 days for the Audit to complete! haha. :-)

I moved over to the Sun JDK 8 prerelease for arm/hardfloat. Much faster than OpenJDK on the rPi on the heavy tasks (maybe 5x to 10x speedup).

Anyway, thought you'd get a kick outa the info.

JB

@MisterTea
Copy link
Owner

Awesome!! Does MAME work on the raspberry pi?

I'm going to open source the MAME changes pretty soon.

On Sun, May 12, 2013 at 12:56 PM, Jeremy Blow notifications@github.comwrote:

Heya MisterTea...

Just wanted to report (in this dead and closed issue) that your commit
resolved that issue. And, also, the lobby finally loaded on my Raspberry
Pi.... but took 2 days for the Audit to complete! haha. :-)

I moved over to the Sun JDK 8 prerelease for arm/hardfloat. Much faster
than OpenJDK on the rPi on the heavy tasks (maybe 5x to 10x speedup).

Anyway, thought you'd get a kick outa the info.

JB


Reply to this email directly or view it on GitHubhttps://github.com//issues/3#issuecomment-17784238
.

@jeremyblow
Copy link

jeremyblow commented May 12, 2013

So far, I've only worked on mamehub. I'm going to give csmame/mame a go later this evening. I'll let you know how it goes.

Cool, looking forward it!

JB

@MisterTea
Copy link
Owner

If you could share a pic of your pi running mamehub, that would be awesome!

@jeremyblow
Copy link

Shirley..

MAMEHub on rPi
Imgur

CPU eventually settles down. Player state changes peg it for about 15-30 seconds.

@MisterTea
Copy link
Owner

Hey,

Now that the emulator is open sourced, would it be possible to get the entire thing working on a pi?

@jeremyblow
Copy link

Totally. Our rag-tag fugitive team is hacking on it. CSMame first. Mamehub is a bear on rPi... we'll need to dig in to the internals to see where the bottlenecks are (Java vs. mamehub processes).

@jeremyblow
Copy link

Here's what we are facing. At the versions of MAME that CSMame is using, ARM support is non-trivial. The forks, advanceMAME and MAME4ALL seem to have moved forward and will build on ARM, but are such a step backwards as far as the emulator version, and offer no hope of compatibility with CSMame. Could we plow through and get it to work, probably, but it'd end up being yet another port of MAME, and, I'm guessing it would take a MAME dev 1/100th the time to fix the problems.

There was one guy who seems to have gotten MAME to build on a cubox. His patch to MAME was pretty large. But, cubox is ARMv7 and the rPi is ARMv6, which is also a non-trivial issue.

There is much speculation out there stating that it's a lost cause anyway because the rPi is under-powered for modern MAME. Somewhat annoying because it's all speculation, I'm pretty certain nobody has been able to even try it. Certainly they are not considering the perf improvements MAME has encountered as a result of its c++ overhaul. Will it still be underpowered, I don't know, I believe it's an open question.

@MisterTea
Copy link
Owner

Hey Jeremy,

Are you sure about ARM support in current versions? I compiled the latest
version of MAME for ARM a few years back with only a few hiccups. I also
built MAME 0.146 for android without too much trouble and that's ARM. I'm
pretty sure we could get a raspberry pi build of CSMAME without too much
trouble.

IIRC, I had to change all of the dynamic_cast<..> functions to use C++
polymorphism, but that was the only problem.

On Tue, Jun 11, 2013 at 5:31 PM, Jeremy Blow notifications@github.comwrote:

Here's what we are facing. At the versions of MAME that CSMame is using,
ARM support is non-trivial. The forks, advanceMAME and MAME4ALL seem to
have moved forward and will build on ARM, but are such step backwards as
far as the emulator version, and offer no hope of compatibility with
CSMame. Could we plow through and get it to work, probably, but it'd end up
being yet another port of MAME, and, I'm guessing it would take a MAME dev
1/100th the time to fix the problems.

There was one guy who seems to have gotten MAME to build on a cubox.
His patch to MAME was pretty large. But, cubox is ARMv7 and the rPi is
ARMv6, which is also a non-trivial issue.

There is much speculation out there stating that it's a lost cause anyway
because the rPi is under-powered for modern MAME. Somewhat annoying because
it's all speculation, I'm pretty certain nobody has been able to even try
it. Certainly they are not considering the perf improvements MAME has
encountered as a result of its c++ overhaul. Will it still be underpowered,
I don't know, I believe it's an open question.


Reply to this email directly or view it on GitHubhttps://github.com//issues/3#issuecomment-19301069
.

@jeremyblow
Copy link

Hey, that's encouraging. Can't imagine much has changed since .146. Surprised haven't found anyone doing it yet. Do you happen remember your build environment? I may be missing something basic. I've been building either via qemu'd raspbian, chrooted cross compiling on deb 7 64 as armv6 (gcc version 4.6.3 (Debian 4.6.3-14+rpi1)), or straight cross via gcc linaro-4.7.-2013.01 / crosstool-ng w/ arm-unknown-linux-gnueabi.

@MisterTea
Copy link
Owner

I don't remember the build environment, but if you give me instructions on
how you are building it, I can work through the errors myself. I've been
working with the MAME codebase for awhile
On Jun 11, 2013 10:19 PM, "Jeremy Blow" notifications@github.com wrote:

Hey, that's encouraging. Can't imagine much has changed since .146.
Surprised haven't found anyone doing it yet. Do you happen remember your
build environment? I may be missing something basic. I've been building
either via qemu'd raspbian, chrooted cross compiling on deb 7 64 as armv6
(gcc version 4.6.3 (Debian 4.6.3-14+rpi1)), or straight cross via gcc
linaro-4.7.-2013.01 / crosstool-ng w/ arm-unknown-linux-gnueabi.


Reply to this email directly or view it on GitHubhttps://github.com//issues/3#issuecomment-19307348
.

@jeremyblow
Copy link

That'd be excellent. My MAME exposure is just about one month. :-) Plus I only dig into C++ when troubleshooting stuff. Chrooted is probably the quickest path, here are my build steps. Note this also includes using directfb / cubox patch at the bottom, which is optional but moved me further along.

Grab Raspbian

wget http://mirrors.rit.edu/rpi/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip

Grab qemu

sudo apt-get install qemu qemu-user qemu-user-static qemu-system

The raspbian image is a little too cozy, only couple hundred MB free. Expand it to 4GB.

unzip 2013-02-09-wheezy-raspbian.zip
qemu-img resize 2013-02-09-wheezy-raspbian.img +2G

Raspbian will have boot problems via qemu unless we prevent preloading some libraries.
Mount the second partition in the image so we can make some changes.

mkdir raspbian_root
sudo mount 2013-02-09-wheezy-raspbian.img -o offset=62914560 ./raspbian_root

sudo vi ./raspbian_root/etc/ld.so.preload and comment out the first line. You should end
up with:

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

We need to make a another change to udev so we can expand the partition via raspi-config.
Create sudo vi ./raspbian_root/etc/udev/rules.d/90-qemu.rules and add the folllwing:

KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n",

Great. Go ahead and umount the img.

sudo umount ./raspbian_root

Next, we'll boot up the image, run a quick fsck, reboot, and expand the second partition.
Boot the image:

wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
qemu-system-arm -kernel kernel-qemu \
  -cpu arm1176 \
  -m 256 \
  -M versatilepb \
  -no-reboot \
  -serial stdio \
  -append "root=/dev/sda2 panic=1" \
  -hda ./2013-02-09-wheezy-raspbian.img

On the launched vm, you'll see some file system errors, when you get to the shell you can fix
them with fsck. Make sure you're in the pi shell and not on your local system!

fsck /dev/sda2  # Say yes to prompt
exit

You should be exited out of qemu, relaunch the vm again:

qemu-system-arm -kernel kernel-qemu \
  -cpu arm1176 \
  -m 256 \
  -M versatilepb \
  -no-reboot \
  -serial stdio \
  -append "root=/dev/sda2 panic=1" \
  -hda ./2013-02-09-wheezy-raspbian.img

When you get to the shell, login (username pi, password raspberry). Launch raspi-config using
sudo raspi-config. A menu should load. Choose the option to "expand file system". When it's
finished, choose Finish and say yes to reboot. Qemu should exit. Relaunch qemu again as done
in the previous step to allow resize2fs to resize the partition. When it's done booting, login and sudo halt. Exit qemu when system is halted.

From here, we're ready to chroot the img. First mount it back up:

sudo mount 2013-02-09-wheezy-raspbian.img -o offset=62914560 ./raspbian_root

Next, chroot the mount.

sudo chroot ./raspbian_root

From here, most things will work. You won't have /proc, /sys or /dev, but for building this seems
to mostly be a cosmetic issue. If it truly concerns you, you can mount bind your system's proc/sys/dev,
but this makes me uncomfortable and probably not necessary. If you need to exit out at any time just exit
and umount ./raspbian_root.

On to MAME.

Some deps, some may not be needed, but were added while troubleshooting.

sudo apt-get update
sudo apt-get install qt4-dev-tools
sudo apt-get install libgtk2.0-dev
sudo apt-get install libgconf2-dev
sudo apt-get install libasound2-dev
sudo apt-get install libsdl1.2-dev
sudo apt-get install libfontconfig1-dev
sudo apt-get install libexpat1-dev
sudo apt-get install libflac-dev
sudo apt-get install libportmidi-dev
sudo apt-get install libdirectfb-bin  # possibly optional
sudo apt-get install libdirectfb-dev  # possibly optional
sudo apt-get install g++
sudo apt-get install zlib-bin
sudo apt-get install libjpeg8
sudo apt-get install libportmidi0
sudo apt-get install unzip expat

Get MAME

mkdir /home/pi/mame
cd /home/pi/mame
wget http://mamedev.thiswebhost.com/releases/mame0148s.zip
unzip mame0148s.zip
unzip mame.zip

From here, you can make normally. Using -jwhatever to build if you have the cores is fine while chrooted.

I've been looking at this guy's patch
for cubox and playing with directfb. Moved me further along, but also may have moved me backwards.

wget -O mame0148.pkg.tgz http://www.solid-run.com/phpbb/download/file.php?id=46
tar -zxvf mame0148.pkg.tgz
patch -p1 < mame0148.pkgbuild/mame0148.cubox.jan21.patch 

make -j9 OSD=directfb NOWERROR=1

That's it so far. A few of us who are interested this generally hang out in IRC. E-mail me if you want the server/channel info.

Kewl. Looking forward.

@jeremyblow
Copy link

oh hey now. Just saw Dave Spencer post on your g+. Do you work with him? I worked with him at his start-up a long long time ago in a land far far away called Santa Monica. If u see him tell him I say hello! :-)

@MisterTea
Copy link
Owner

I used to work with him, but I still see him from time to time. I'll let
him know you said hi!

On Wed, Jun 12, 2013 at 12:36 AM, Jeremy Blow notifications@github.comwrote:

oh hey now. Just saw Dave Spencer post on your g+. Do you work with him? I
worked with him at his start-up a long long time ago in a land far far away
called Santa Monica. If u see him tell him I say hello! :-)


Reply to this email directly or view it on GitHubhttps://github.com//issues/3#issuecomment-19310711
.

@jeremyblow
Copy link

That's really cool. I learned a LOT from Dave. Thx!

@MisterTea
Copy link
Owner

Hey Jeremy: The MAMEHub GUI is MUCH faster now, I bet it will run pretty smoothly on a raspberry pi.

@MisterTea MisterTea reopened this Jun 18, 2013
Prinygod added a commit that referenced this issue Apr 13, 2015
merge from misterTea/Mamehub
MisterTea pushed a commit that referenced this issue Mar 4, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants