SETI@Home Enhanced on Raspberry Pi using Archlinux |
![]() |
| log in |
Questions and Answers : Unix/Linux : SETI@Home Enhanced on Raspberry Pi using Archlinux
| Author | Message |
|---|---|
|
Hey Guys | |
| ID: 1306716 · | |
|
Well I was mistaken and the 5.13 app is producing invalid results. <result> <name>31au12aa.15618.19462.140733193388038.10.205_3</name> <final_cpu_time>0.000000</final_cpu_time> <final_elapsed_time>0.000000</final_elapsed_time> <exit_status>11</exit_status> <state>3</state> <platform>armv6l-unknown-linux-gnueabihf</platform> <version_num>610</version_num> <stderr_out> <![CDATA[ <message> process got signal 11 </message> <stderr_txt> </stderr_txt> ]]> I managed to run it manually in the slot with GDB. Error: Starting program: /var/lib/boinc/projects/setiathome.berkeley.edu/setiathome_enhanced [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". Program received signal SIGILL, Illegal instruction. 0x401c2c80 in _armv7_neon_probe () from /usr/lib/libcrypto.so.1.0.0 Had a bit of a look around at libcrypto and saw that there's a crypto assembler file armv4cpuid.S that does a neon probe: #include "arm_arch.h" .text .code 32 .align 5 .global _armv7_neon_probe .type _armv7_neon_probe,%function _armv7_neon_probe: .word 0xf26ee1fe @ vorr q15,q15,q15 .word 0xe12fff1e @ bx lr I'm guessing this is getting called for some reason even though the Raspberry Pi ARMv6 processor does not have NEON logical and compare support. Continuing investigation... | |
| ID: 1308297 · | |
|
OK, I managed to get around that NEON instruction problem by doing: export OPENSSL_armcap=6 Looks like this bit of code in armcap.c in crypto library allowed me to bypass: if ((e=getenv("OPENSSL_armcap"))) { OPENSSL_armcap_P=strtoul(e,NULL,0); return; } Running again we get more issues: (gdb) run Starting program: /var/lib/boinc/projects/setiathome.berkeley.edu/setiathome_enhanced [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [New Thread 0x4002b460 (LWP 226)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x4002b460 (LWP 226)] 0x4000eaf4 in _dl_fixup () from /lib/ld-linux.so.3 (gdb) bt #0 0x4000eaf4 in _dl_fixup () from /lib/ld-linux.so.3 #1 0x40015534 in _dl_runtime_resolve () from /lib/ld-linux.so.3 #2 0x40032bf4 in handle_heartbeat_msg () at boinc_api.cpp:363 #3 0x400350c8 in timer_handler () at boinc_api.cpp:1126 #4 timer_thread () at boinc_api.cpp:1239 #5 0x40453d60 in start_thread () from /usr/lib/libpthread.so.0 #6 0x40537d48 in ?? () from /usr/lib/libc.so.6 Cannot access memory at address 0x0 #7 0x40537d48 in ?? () from /usr/lib/libc.so.6 Cannot access memory at address 0x0 Eeerrr yuk... That's enough for me tonight I think. Might tackle again in a day or so if I have time. | |
| ID: 1308322 · | |
|
So I thought I'd kick off a compile of the latest versions of BOINC and seti_boinc and come back a bit later. 14:37:09 (23461): No heartbeat from client for 30 sec - exiting I think I will stick with these versions and see if I can work out this heartbeat issue... Any active developers out there that can provide any guidance? | |
| ID: 1308363 · | |
|
Not a developer, but this might make testing the apps a little bit easier. | |
| ID: 1308377 · | |
Any active developers out there that can provide any guidance? Maybe You should register in Seti@Home Beta and share Your ideas/troubles in Beta forums. ____________ | |
| ID: 1308379 · | |
One thing to watch for when using GDB is that signals will be caught by GDB even if there is a signal handler in place. It's common practice to install a signal handler for SIGILL and the execute an instruction to see if it is supported. FFTW uses this method and SETI@home uses this method. Outside of GDB the signal will be caught if it is raised and then the routines that use the illegal instruction will be avoided. Inside GDB the signal will be caught by GDB by default. If you just continue from this point, it may work. The other option is to tell GDB not to catch SIGILL. ____________ | |
| ID: 1308470 · | |
That might mean that the client is getting stuck in the section that benchmarks the science routines. The default choice of timer might not be working for you. If ARM supports a cycle counter you can add the code to client/vector/hires_timer.{cpp,h} ____________ | |
| ID: 1308479 · | |
|
Thanks for the responses! That might mean that the client is getting stuck in the section that benchmarks the science routines. The default choice of timer might not be working for you. If ARM supports a cycle counter you can add the code to client/vector/hires_timer.{cpp,h} Well it restarts after 10 seconds on both ARM and x86 machine (compiled same versions). The x86 machine seems to get a little further (past benchmarking it seems) but still bombs out with "No heartbeat from client for 30 sec - exiting". I'll check out the forum arkayn linked me once my registration has been approved. | |
| ID: 1308616 · | |
Thanks for the responses! Already done. ____________ | |
| ID: 1308648 · | |
|
Just thought I'd update to say I've had some success. During my recent testing I ended up reverting back to Raspbian (instead of ArchLinux) as there was significant improvement in performance. | |
| ID: 1309113 · | |
Questions and Answers : Unix/Linux : SETI@Home Enhanced on Raspberry Pi using Archlinux
| Copyright © 2013 University of California |