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

boinc crashes frequently on mac mini powerpc hardware #632

Closed
romw opened this issue Feb 4, 2015 · 4 comments
Closed

boinc crashes frequently on mac mini powerpc hardware #632

romw opened this issue Feb 4, 2015 · 4 comments

Comments

@romw
Copy link
Member

romw commented Feb 4, 2015

Reported by fthomas on 3 Dec 38373192 21:20 UTC
This bug has been reported in Debian's BTS (#479204):

boinc-client 5.10.45-2 fails to run for any significant period of time on my powerpc (mac mini) hardware. The version in debian stable works with no trouble (5.4.11-4). Here is a segment from the log file and a back trace using gdb.

log file segment:

 SIGSEGV: segmentation violation
 Stack trace (7 frames):
 /usr/bin/boinc_client[[0x100344](0x100544a0]
)
 /usr/bin/boinc_client[/usr/bin/boinc_client[0x10019f70](0x1003e08c]
)
 /usr/bin/boinc_client[/lib/libc.so.6[0xf9f4720](0x1004397c]
)
 /lib/libc.so.6[```

 gdb session:

(gdb) run --check_all_logins --redirectio --dir /var/lib/boinc-client
Starting program: /usr/bin/boinc_client --check_all_logins --redirectio --dir /var/lib/boinc-client
Thread debugging using libthread_db enabled
Thread 0x48026880 (LWP 19048)

Program received signal SIGSEGV, Segmentation fault.
to Thread 0x48026880 (LWP 19048)
HOST_INFO::users_idle (this=, check_all_logins=false, idle_time_to_run=)
at hostinfo_unix.C:774
774 hostinfo_unix.C: No such file or directory.
in hostinfo_unix.C
(gdb) bt
#0 HOST_INFO::users_idle (this=, check_all_logins=false, idle_time_to_run=)
at hostinfo_unix.C:774
#1 0x10019f70 in CLIENT_STATE::poll_slow_events (this=0x10099878) at client_state.C:499
#2 0x1004397c in boinc_main_loop () at main.C:471
#3 0x0f9f4720 in ?? () from /lib/libc.so.6
#4 0x0f9f48e0 in __libc_start_main () from /lib/libc.so.6
#5 0x00000000 in ?? ()



The code from `client/hostinfo_unix.C` which causes the SIGSEGV is:
```c++
766: inline bool all_tty_idle(time_t t, char *device, char first_char, int num_tty) {
767:     struct stat sbuf;
768:     char *tty_index = device + strlen(device) - 1;
769:     *tty_index = first_char;
770:     for (int i = 0; i < num_tty; i++, (*tty_index)++) {
771:         if (stat(device, &sbuf)) {
772:             // error looking at device; don't try any more
773:             return true;
774:         } else if (sbuf.st_atime >= t) {
775:             return false;
776:         }
777:     }
778:     return true;
779: }
@romw
Copy link
Member Author

romw commented Feb 4, 2015

Commented by Nicolas on 15 Jan 38373199 16:26 UTC
Can you get the data inside sbuf from gdb? I think just "print sbuf" will recursively output all the structure members.

@romw
Copy link
Member Author

romw commented Feb 4, 2015

Commented by Nicolas on 29 Aug 38373207 20:00 UTC
Also, why is users_idle getting called with check_all_logins=false if the --check_all_logins argument '''is''' being passed to the program?

@romw
Copy link
Member Author

romw commented Feb 4, 2015

Commented by Nicolas on 23 Dec 38373232 12:26 UTC
Okay now I'm fully confused.

The backtrace mentions users_idle as the top stack frame, yet that function is in line 870. users_idle calls all_tty_idle only if check_all_logins is true, which according to the backtrace it's not.

Also, the backtrace definitely lacks something. If I put together the backtrace from gdb, and what was printed in the log:

 /usr/bin/boinc_client[= not listed in bt!
 [0x100344](0x100544a0]) = not listed in bt!
 /usr/bin/boinc_client[= *presumably* HOST_INFO::users_idle at hostinfo_unix.C:774
 /usr/bin/boinc_client[0x10019f70](0x1003e08c]) = CLIENT_STATE::poll_slow_events at client_state.C:499
 /usr/bin/boinc_client[= boinc_main_loop at main.C:471
 /lib/libc.so.6[0xf9f4720](0x1004397c]) = ?? () (libc6)
 /lib/libc.so.6[0xf9f48e0] = __libc_start_main () (libc6)

Can you look up what function/line number correspond to 0x1003e08c and 0x100544a0? (addr2line)

@romw
Copy link
Member Author

romw commented Feb 4, 2015

Commented by davea on 1 Jul 38390117 23:06 UTC
fixed in [14996]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants