-
Notifications
You must be signed in to change notification settings - Fork 29
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
32bit AppImage with size bigger than 2GB not working #21
Comments
Very interesting, thanks for reporting. I was not aware that there is a limit on the size of the executable to access its location from You are saying that the same large AppImage works on one system (openSUSE) bit not on another (Ubuntu)? Then possibly you should report this to the openSUSE Bugzilla. I don't think we can fix it from within this project (though I might be wrong). |
@probonopd I think we have a similar issue in this tracker or maybe linuxdeployqt's. Might be worth using the search to find it. |
Thanks for the hint. I'll open an bug on the openSUSE bugzilla. Since it's an commercial game I cannot upload it to public. Maybe I search for a free/FOSS alternative to reproduce the problem. |
@sigmaboy you could perhaps try to reproduce the issue with a mock AppImage (if it's a size issue, just put random data in there or so). |
I reproduced the error with random data and as I expected i get the same error. Here is the link to the test AppImage with the error: |
Thanks @sigmaboy. Do you have a link to the issue on the openSUSE Bugzilla? |
I must correct one thing. (X)Ubuntu 18.04 x86_64 has the same issue |
I think another component isn't compiled with the right option. But I don't know which so I created the issue here. the bug report doesn't have any progress yet. But the filesize cap is 2GB |
If the error lies with AppImage, why would it then work on some distributions but not others? Could it be that the libraries the AppImage runtime loads from the base system (e.g., libfuse) also would need to be compiled with |
@sigmaboy you might be right, squashfuse etc. may not necessarily be built with this option. But @probonopd's theory sounds reasonable as well. Maybe you can try to mount the AppImage manually? Just |
the issue gets even weirder. My friend with ubuntu doesn't get the error. My posted AppImage works fine for him. But I installed a (X)ubuntu 17.10 and a 18.04 x86_64 and I get the error from above. These are the libraries I installed on the Ubuntu vm
I thought that maybe some coreutils programs causes the issue. But as I wrote in this comment I can reproduce the error on x86_64 ubuntu virtual machine. This is odd because the same AppImage works fine in the Ubuntu x86_64 of my friend. So maybe this is a missing package error? I only installed base Xubuntu with the i386 libraries from above. @TheAssassin I can't mount the image as a loop mount. I think I need the offset with I only can surmise that this a compiling, package or filesystem related issue. I use ext4 as my filesystem. Jfyi |
You shouldn't have to specify the offset normally. What error message do you get? You should try e.g., a live ISO to check whether the issue is limited to your installation. |
sigmaboy@ubuntu-17:~$ sudo mount -o loop TestApp.AppImage /mnt/
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error. I'll try a live ISO and test it there. And on my other computer. But I think I will get the same error as before. Since I used a KVM vm with it's own kernel and userland my host system shouldn't have something to do with the error on the ubuntu VM |
Ah, you already tested in a VM. Well, then this could really be a bug. Please tell me what exact systems you tried it on (ideally the ISOs' URLs) and I will try to reproduce these issues. |
Looking into this issue at the moment. At first I thought the place where it's missing is the runtime compilation, but actually the flag is there in our build script. I think OBS embeds the AppRun binary, doesn't it? It's one of the four places where |
It appears like #814 fixed the issue. Please reopen if this is not the case. We don't have any influence when the new AppRun will be available on OBS, please refer to #opensuse-buildservice on Freenode. |
@TheAssassin Could you please reopen the issue and investigate further. Because you closed it, I cannot re-open it by myself. Only the one who closed it, is able to repon the issue. And thank you very much for all your help. If I can do anything, just ask |
Thanks for re-testing @sigmaboy |
Please provide an AppImage for me to test. |
@TheAssassin |
I don't trust nor like Google, perhaps use a non-Google host? (e.g., https://transfer.sh) |
I tried transfer.sh and the file is too big. So is google at least okay for you? If not I don't know where I could upload files that big. And I got an interesting info: I try the old one with CentOS aswell and report it to you. |
Didn't know that, must be a newer change. I'll get it from Google then, sorry. |
@probonopd can you help me migrating this issue to libappimage? |
Fixed at #20 |
I dropped the issue because I had no more ideas left. @azubieta seemed to fix this but unfortunately this doesn't work for me. I still get the same error on the same filesystems. tmps, vfat and nfs still working, while the other don't. Could you maybe have another look into it. If you want, I can provide updated Appimage built with current versions of appimagetools. |
@sigmaboy Indeed I tried to solve the issue. Please make sure you are using the very latest versions of our tools. If this doesn't work feel free to share an updated AppIage for us to test. |
@azubieta is AppImageKit using the latest 0.1.x version of libappimage? I doubt it. Can you please update it there? |
@TheAssassin I don't have permissions to push to the AppImageKit master branch. |
There's PRs, you can update submodules there, too. But I'll quickly do it. |
That explained alot. But unfortunately it won't work with the latest version of libappimage. |
@azubieta Could you maybe have another look at it? |
@sigmaboy sure, would you mind to ping me at freenode so we can talk about it and find a final solution. |
Can we make a test for this? This is one of the errors we normally wouldn't catch quickly because the vast majority of AppImages is smaller than 200 MB. Hence, a test would be especially useful for such edge cases. |
@azubieta tested it in a "sane" way locally and thought the issue was fixed (i.e., in a way you would write such a system test, too). However, now it seems there was another edge case found where it failed again. A test wouldn't have captured that. What I don't like about such a test is the high amount of file I/O which would be annoying for devs. It wears down SSDs quite quickly. Also, it seems to be quite tricky to create the environment to reproduce the bug, which is also a reason against such a test. And I'd never test such things on a totally unknown environment such as Travis CI -- who knows what they configured in their kernels etc.? |
@TheAssassin @azubieta
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 libz1:i386 libfuse2:i386 openssh-server
sudo systemctl start sshd.service
sudo passwd xubuntu Set the password as you wish mkdir tmpfs
sudo mount -t tmpfs -o size=3G none tmpfs
dd if=/dev/zero of=./tmpfs/test.img bs=1M count=3072
mkfs.ext4 ./tmpfs/test.img
mkdir ext4
sudo mount ./tmpfs/test.img ext4
sudo chown xubuntu:xubuntu ./tmpfs/ext4/
client$ scp TestApp_2019-01-23.AppImage xubuntu@10.0.0.xxx:/home/xubuntu/ext4/
./ext4/TestApp_2019-01-23.AppImage Alternative install some linux distribution with an ext or xfs filesystem and run the appimage from there. As written in this comment. tmpfs, nfs and (v)fat are not affected by this bug |
Why would someone want to run a 32-bit AppImage on a 64-bit system? Seems like an odd edge case to me. |
Whenever there's just 32-bit binaries available that you want to (re-)package, and you don't want to ship 2 AppImages with the exact same contents. |
Well, even in those cases it may be advisable to make a 64-bit AppImage that contains both the 32-bit application, any 32-bit libraries it needs to run, and a 64-bit runtime, because those cannot reasonably assumed to be present on all 64-bit systems. Personally I can live with a 2 GB limitation on 32-bit AppImages running on 64-bit systems and would not invest any time into this, as long as the 2 GB limitation is not there on 32-bit systems running 32-bit AppImages nor 64-bit systems running 64-bit AppImages (the latter is what we mainly care about those days). |
in some cases the 32bit payload in a 64 appimage won't work because of bugs(!?) inside the application. My goal was to build appimages for linux games for lan parties I host. And some of them crash when running from a 64bit appimage. Starting them regularly (without appimage) works perfectly fine with a 64bit OS. Games with the same engine smaller than 2GB work with a 32bit appimage. I haven't tested the appimage inside a 32bit linux. Atm I'm downloading 32bit xubuntu. But I think the problem exists also with 32bit linux distributions. /e: I tested and verified the bug with Xubuntu 18.04 i386 |
OK, thanks for testing @sigmaboy |
I expected that, or rather, if it doesn't work in a 64-bit environment, it won't work in a 32-bit one for sure. |
Any news on that issue? |
As for me, I haven't investigated this: I don't have any 32-bit systems anymore, nor do I have any AppImage over 2 GB. Pull requests welcome though. |
To be honest, for large video games I would just use something like linuxdeploy without creating an AppImage and then put the whole thing into a compressed archive. Or alternatively put only the game engine stuff into an AppImage and store the game files in a single PAK style format (like .vpk or .gcf files). |
When I built an large (5GB) x86 AppImage on my x86_64 openSUSE linux I get the following error when running it:
It seems my image is too big. A friend of mine is using Ubuntu and for him the generated AppImage works fine.
Since it's a video game with packed size of 5GB I can't get it smaller.
I googled a lot and found out the following. Maybe I need to rebuild some of my software stack (maybe coreutils) with the following gcc option
But I think this is already activated on my whole software stack, because this is stuff which changed in like 2006. But of course I'm not sure.
I successfully built x86 appimages (also games) which are smaller than 2GB which work flawlessly.
Strace prints the following line when executing the binary
I'm using openSUSE 42.3 x86_64 with the default kernel.
If you need any more info, just ask.
Thank you in advance
The text was updated successfully, but these errors were encountered: