Opened 10 years ago
Closed 9 years ago
#500 closed defect (fixed)
builtin libjbigi crashes router on armel
Reported by: | linuxkasten | Owned by: | zzz |
---|---|---|---|
Priority: | major | Milestone: | 0.8.8 |
Component: | router/general | Version: | 0.8.7 |
Keywords: | Cc: | ||
Parent Tickets: | Sensitive: | no |
Description
On my Seagate dockstar (armel cpu), the builtin libjbigi crashes my I2P router on startup. Doesn't matter if I copy it into $I2P/libjbigi.so or leave it loading from inside jbigi.jar. Self-compiled version works. Maybe the library is big instead of little endian?
I2P version: 0.8.7-0
Java version: Sun Microsystems Inc. 1.6.0_18 (OpenJDK Runtime Environment 1.6.0_18-b18)
Platform: Linux arm 2.6.39-2-kirkwood
Processor: uninitialized (arm)
Jbigi: Locally optimized native BigInteger? library loaded from file
Encoding: ANSI_X3.4-1968
Subtickets
Attachments (2)
Change History (13)
Changed 10 years ago by
Attachment: | hs_err_pid19974.log added |
---|
comment:1 Changed 9 years ago by
Owner: | set to zzz |
---|---|
Status: | new → accepted |
comment:2 Changed 9 years ago by
I'm not an expert, too
I built it on my armel system just using "./build.sh dynamic" inside the core/c/jbigi folder. Maybe it helps if I upload my (unstripped) version ob libjbigi.so?
Changed 9 years ago by
Attachment: | libjbigi.so added |
---|
comment:3 Changed 9 years ago by
I have to find out how to set the compiler to generate instructions that can be used on a wide range of processors. And maybe find a tool to tell me what instructions are in a .so file so I can verify what I build. I think we need the "EABI" instructions.
comment:4 Changed 9 years ago by
I'm a little suspicious of your libjbigi.so at 6044 bytes when mine is 83592 bytes.
comment:6 Changed 9 years ago by
cat /proc/cpuinfo Processor : Feroceon 88FR131 rev 1 (v5l) BogoMIPS : 1191.11 Features : swp half thumb fastmult edsp CPU implementer : 0x56 CPU architecture: 5TE CPU variant : 0x2 CPU part : 0x131 CPU revision : 1 Hardware : Seagate FreeAgent DockStar Revision : 0000 Serial : 0000000000000000
May sound stupid, but did you already check the right endianess? "file" doesn't show it, right?
comment:7 Changed 9 years ago by
As I mentioned, mine is dynamically built:
ldd libjbigi.so libgmp.so.10 => /usr/lib/libgmp.so.10 (0x40076000) libc.so.6 => /lib/arm-linux-gnueabi/libc.so.6 (0x400ed000) /lib/ld-linux.so.3 (0x40040000)
Maybe yours is statically built, that would explain the difference in size.
You used a crosscompiler to generate it, right?
comment:8 Changed 9 years ago by
It's clear that my armv7-compiled libs won't work on v5, and I can't figure out how to build v5-compatible libs on my trimslice, so KillYourTV is going to build v5 libs using qemu. And we're adding support in the installer and the router to detect what version is required and load the correct one.
Yes, everything is little-endian. 'file' says 'LSB'
No I didn't use a cross compiler, the trimslice is native arm.
comment:9 Changed 9 years ago by
Perhaps this will work on your system: http://killyourtv.i2p/tmp/i2p-ARM-ONLY-0.8.7-19.jar This installer is 8.6MB and as the name implies it only includes the ARM wrapper/jbigi.
If you'd prefer you can try building it yourself following the instructions at http://www.i2p2.de/newdevelopers .
In any case, if you can try this out and let us know how it goes it would be appreciated.
comment:10 Changed 9 years ago by
A user on IRC stated that the installer that I linked above worked on his ARM box.
The release of 0.8.8 should fix this problem.
comment:11 Changed 9 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Hopefully fixed in 0.8.8.
I compiled it on an NVidia Tegra (Trimslice).
Signal 4 is illegal instruction.
I assume that it's somehow used an instruction not available on your processor. Or, perhaps, some other bug, everything on the trimslice is beta. Maybe I need to recompile with different compiler arguments. I'm not an ARM expert. Any ideas? Are there differences in instruction set between your processor and mine?