I am trying to run Firefox inside of a Linux chroot. The chroot has a copy of Debian Etch installed via debootstrap. If the chroot is running on a machine w/ a 2.6 kernel, I can run Firefox 2.0, 3.0 and 3.5 all fine. My problem occurs when I move the chroot to a machine running a 2.4.37 kernel, then I can run 2.0 alright, but 3.0 and 3.5 both hang silently with no display and no errors output.
With Firefox 3.5 on the Kernel 2.4 machine, strace -f ./firefox
outputs: (only the last few lines before the hang shown)
[pid 8220] set_thread_area({entry_number:-1 -> -1, base_addr:0x41bef140, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = -1 ENOSYS (Function not implemented)
[pid 8220] modify_ldt(1, {entry_number:0, base_addr:0x41bef140, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, 16) = 0
[pid 8220] munmap(0x40019000, 11144) = 0
[pid 8220] getpid() = 8220
[pid 8220] rt_sigaction(SIGRTMIN, {0x400241e0, [], SA_RESTORER, 0x416f58f8}, NULL, 8) = 0
[pid 8220] rt_sigaction(SIGRT_1, {0x40023cc0, [RTMIN], SA_RESTORER, 0x416f58f8}, NULL, 8) = 0
[pid 8220] rt_sigaction(SIGRT_2, {0x40023500, [], SA_RESTORER, 0x416f58f8}, NULL, 8) = 0
[pid 8220] rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
[pid 8220] rt_sigprocmask(SIG_UNBLOCK, [RT_1], NULL, 8) = 0
[pid 8220] open("/proc/cpuinfo", O_RDONLY) = 3
[pid 8220] read(3, "processor\t: 0\nvendor_id\t: Genuin"..., 1024) = 422
[pid 8220] read(3, "", 1024) = 0
[pid 8220] close(3) = 0
[pid 8220] readlink("/etc/malloc.conf", 0xbfffe47b, 4096) = -1 ENOENT (No such file or directory)
[pid 8220] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid 8220] rt_sigsuspend([]
The set_thread_area
call failing with "Function Not Implemented" along with the fact that since I'm runninng in a chroot, only the kernel is different between my two running environments, leads me to believe that Firefox does not run on the 2.4 kernel. However, Mozilla lists a long list of requirements for running Firefox, and 2.6 kernel is not one of them. Can anyone suggest a workaround for how I can get this running?
Answer
The first thing I'd try is to actually compile it on the 2.4-kernel machine, so your compiler doesn't try to use the 2.6-kernel ABI. If you can successfully compile under 2.4, it'll probably work fine. If not, there's probably a hidden dependency somewhere.
No comments:
Post a Comment