On Wed, May 02, 2018 at 03:53:54PM +0300, Paul Irofti wrote:
> On Wed, May 02, 2018 at 02:23:06PM +0200, Sebastien Marie wrote:
> > Hi,
> > 
> > I recently received a pine64 board for doing Rust work on it (thanks
> > danj@) and I have some problems with it.
> > 
> > One of them is random crash or dead-lock when running rustc, which is a
> > multi-threaded program.
> > 
> > I dunno how to debug it, but the difference between running on bsd.mp
> > (the default) or bsd.sp is important.
> 
> You could start by running ktrace -di and showing us the output.

here some elements. sorry for the delay.

the build is ran with ulimit -d 16777216.

the same compiled library could crash or dead-lock in a way or another
(or just compile fine) at each call.

Running with GENERIC make the build advance (it crashes later when
building librustc, but I assume it should be another problem). Here it
didn't pass the building of rustbuild (the "make" equiv) and fail
quickly (less than 5 minutes).


====> Dead-lock

Program manually interrupted with Ctrl+C.
5 threads:
  - __thrsleep() x4
  - poll(INFTIM) x1

kdump -HTR (per thread)

 75280/262373  rustc.bin 0.207776 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 75280/262373  rustc.bin 0.207797 RET   mmap 81054846976/0x12df3ed000
 75280/262373  rustc.bin 0.207865 CALL  
mmap(0,0x1001000,0x3<PROT_READ|PROT_WRITE>,0x5002<MAP_PRIVATE|MAP_ANON|MAP_STACK>,-1,0)
 75280/262373  rustc.bin 0.207885 RET   mmap 82709213184/0x1341da7000
 75280/262373  rustc.bin 0.207892 CALL  
mprotect(0x1341da7000,0x1000,0<PROT_NONE>)
 75280/262373  rustc.bin 0.207908 RET   mprotect 0
 75280/262373  rustc.bin 0.207929 CALL  __tfork(0x3ffffe13f0,24)
 75280/262373  rustc.bin 0.207938 STRU  struct __tfork { tcb=0x12dc3f22f8, 
tid=0x12dc3f22dc, stack=0x1342da7e50 }
 75280/262373  rustc.bin 0.208011 RET   __tfork 609078/0x94b36
 75280/262373  rustc.bin 0.208099 CALL  
__thrsleep(0x12dc3f2204,CLOCK_REALTIME,0,0x12dc3f2200,0x12d12f3590)

 75280/273129  rustc.bin 15.046433 CALL  
mprotect(0x12baa4a000,0x1000,0<PROT_NONE>)
 75280/273129  rustc.bin 15.046453 RET   mprotect 0
 75280/273129  rustc.bin 15.046461 CALL  __tfork(0x1280fd3450,24)
 75280/273129  rustc.bin 15.046471 STRU  struct __tfork { tcb=0x12dc3f2af8, 
tid=0x12dc3f2adc, stack=0x12bac4a5f0 }
 75280/273129  rustc.bin 15.046543 RET   __tfork 357860/0x575e4
 75280/273129  rustc.bin 15.046607 CALL  
__thrsleep(0x12b9bc1800,CLOCK_REALTIME,0,0x12fe8e65c0,0x12b9bc18c8)
 75280/273129  rustc.bin 15.359440 RET   __thrsleep 0
 75280/273129  rustc.bin 15.359479 CALL  sched_yield()
 75280/273129  rustc.bin 15.359494 RET   sched_yield 0
 75280/273129  rustc.bin 15.359501 CALL  
__thrsleep(0x12b9bc1800,CLOCK_REALTIME,0,0x12d12f23b0,0)

 75280/357860  rustc.bin 15.359166 CALL  munmap(0x1334eba000,0x1000)
 75280/357860  rustc.bin 15.359196 RET   munmap 0
 75280/357860  rustc.bin 15.359292 CALL  munmap(0x126bb53000,0x1000)
 75280/357860  rustc.bin 15.359326 RET   munmap 0
 75280/357860  rustc.bin 15.359339 CALL  munmap(0x12e3a16000,0x1000)
 75280/357860  rustc.bin 15.359373 RET   munmap 0
 75280/357860  rustc.bin 15.359414 CALL  __thrwakeup(0x12b9bc1800,1)
 75280/357860  rustc.bin 15.359431 RET   __thrwakeup 0
 75280/357860  rustc.bin 15.359461 CALL  
__thrsleep(0x12dc3f2a00,CLOCK_REALTIME,0,0x12d12f23b0,0)
 75280/357860  rustc.bin 60.784270 PSIG  SIGINT SIG_DFL

 75280/375128  rustc.bin 6.935120 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 75280/375128  rustc.bin 6.935142 RET   mmap 81455423488/0x12f71f2000
 75280/375128  rustc.bin 6.935229 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 75280/375128  rustc.bin 6.935286 RET   mmap 81670062080/0x1303ea4000
 75280/375128  rustc.bin 6.935325 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 75280/375128  rustc.bin 6.935363 RET   mmap 79714951168/0x128f61a000
 75280/375128  rustc.bin 6.935470 CALL  
__thrsleep(0x1305e9f000,CLOCK_REALTIME,0,0x13232132c0,0x1305e9f0c8)
 75280/375128  rustc.bin 6.936372 RET   __thrsleep 0
 75280/375128  rustc.bin 6.936398 CALL  poll(0x12f4477378,1,INFTIM)
 75280/375128  rustc.bin 60.784529 STRU  struct pollfd { fd=4, 
events=0x1<POLLIN>, revents=0<> }

 75280/609078  rustc.bin 14.958281 RET   clock_gettime 0
 75280/609078  rustc.bin 15.045940 CALL  
clock_gettime(CLOCK_MONOTONIC,0x1342d9c2a8)
 75280/609078  rustc.bin 15.045997 STRU  struct timespec { 14991.306034652 }
 75280/609078  rustc.bin 15.046006 RET   clock_gettime 0
 75280/609078  rustc.bin 15.046033 CALL  __thrwakeup(0x12b9bc1800,1)
 75280/609078  rustc.bin 15.046052 RET   __thrwakeup 0
 75280/609078  rustc.bin 15.046080 CALL  
clock_gettime(CLOCK_MONOTONIC,0x1342d9d758)
 75280/609078  rustc.bin 15.046090 STRU  struct timespec { 14991.306129572 }
 75280/609078  rustc.bin 15.046096 RET   clock_gettime 0
 75280/609078  rustc.bin 15.046125 CALL  
__thrsleep(0x12dc3f2200,CLOCK_REALTIME,0,0x12bed1f900,0x12dc3f22c8)


====> Segmentation fault

Segmentation fault
error: Could not compile `serde`.

Caused by:
  process didn't exit successfully: 
`/usr/ports/pobj/rust-1.25.0/rustc-bootstrap-aarch64-1.25.0-20180502/bin/rustc 
--crate-name serde vendor/serde/src/lib.rs --crate-type lib 
--emit=dep-info,link -C debug-assertions=off -C overflow-checks=on --cfg 
feature="default" --cfg feature="std" -C metadata=2282a8f1156dafb5 -C 
extra-filename=-2282a8f1156dafb5 --out-dir 
/home/semarie/repos/openbsd/ports/pobj/rust-1.25.0/build-aarch64/build/bootstrap/debug/deps
 -L 
dependency=/home/semarie/repos/openbsd/ports/pobj/rust-1.25.0/build-aarch64/build/bootstrap/debug/deps
 --cap-lints warn -Cdebuginfo=2` (exit code: 139)

kdump -HTR:

 17058/136030  rustc.bin 167.190890 RET   mmap 25976352768/0x60c4fb000
 17058/136030  rustc.bin 167.191103 CALL  
mmap(0,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 17058/136030  rustc.bin 167.191135 RET   mmap 25191485440/0x5dd879000
 17058/136030  rustc.bin 167.191392 CALL  sched_yield()
 17058/136030  rustc.bin 167.191418 RET   sched_yield 0
 17058/136030  rustc.bin 167.191950 PSIG  SIGSEGV caught handler=0x5bad3ff4c 
mask=0<> code SEGV_MAPERR<1> addr=0x5613ae000 trapno=0
 17058/553252  rustc.bin 167.191995 CALL  sched_yield()
 17058/553252  rustc.bin 167.192036 RET   sched_yield 0
 17058/136030  rustc.bin 167.192043 CALL  sigaction(SIGSEGV,0x5505f2bc0,0)
 17058/553252  rustc.bin 167.192056 CALL  sched_yield()
 17058/136030  rustc.bin 167.192067 STRU  struct sigaction { handler=SIG_DFL, 
mask=0<>, flags=0<> }
 17058/136030  rustc.bin 167.192076 RET   sigaction 0
 17058/553252  rustc.bin 167.192082 RET   sched_yield 0
 17058/136030  rustc.bin 167.192088 CALL  sigreturn(0x5505f2e58)
 17058/553252  rustc.bin 167.192097 CALL  sched_yield()
 17058/136030  rustc.bin 167.192110 RET   sigreturn JUSTRETURN
 17058/553252  rustc.bin 167.192116 RET   sched_yield 0
 17058/553252  rustc.bin 167.192128 CALL  sched_yield()
 17058/136030  rustc.bin 167.192145 PSIG  SIGSEGV SIG_DFL code SEGV_MAPERR<1> 
addr=0x5613ae000 trapno=0
 17058/553252  rustc.bin 167.192159 RET   sched_yield 0
 17058/474627  rustc.bin 167.192209 STRU  struct pollfd { fd=4, 
events=0x1<POLLIN>, revents=0<> }


====> Abort trap

error: Could not compile `serde`.

Caused by:
  process didn't exit successfully: 
`/usr/ports/pobj/rust-1.25.0/rustc-bootstrap-aarch64-1.25.0-20180502/bin/rustc 
--crate-name serde vendor/serde/src/lib.rs --crate-type lib 
--emit=dep-info,link -C debug-assertions=off -C overflow-checks=on --cfg 
feature="default" --cfg feature="std" -C metadata=2282a8f1156dafb5 -C 
extra-filename=-2282a8f1156dafb5 --out-dir 
/home/semarie/repos/openbsd/ports/pobj/rust-1.25.0/build-aarch64/build/bootstrap/debug/deps
 -L 
dependency=/home/semarie/repos/openbsd/ports/pobj/rust-1.25.0/build-aarch64/build/bootstrap/debug/deps
 --cap-lints warn -Cdebuginfo=2` (exit code: 139)


kdump -HTR (per thread)

 45845/111412  rustc.bin 0.192376 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 45845/111412  rustc.bin 0.192398 RET   mmap 39780188160/0x943158000
 45845/111412  rustc.bin 0.192458 CALL  
mmap(0,0x1001000,0x3<PROT_READ|PROT_WRITE>,0x5002<MAP_PRIVATE|MAP_ANON|MAP_STACK>,-1,0)
 45845/111412  rustc.bin 0.192479 RET   mmap 39756308480/0x941a92000
 45845/111412  rustc.bin 0.192486 CALL  
mprotect(0x941a92000,0x1000,0<PROT_NONE>)
 45845/111412  rustc.bin 0.192503 RET   mprotect 0
 45845/111412  rustc.bin 0.192522 CALL  __tfork(0x3ffffd79e0,24)
 45845/111412  rustc.bin 0.192532 STRU  struct __tfork { tcb=0x94076d2f8, 
tid=0x94076d2dc, stack=0x942a928a0 }
 45845/111412  rustc.bin 0.192615 RET   __tfork 262821/0x402a5
 45845/111412  rustc.bin 0.192708 CALL  
__thrsleep(0x94076d204,CLOCK_REALTIME,0,0x94076d200,0x909128590)

 45845/235451  rustc.bin 165.173232 CALL  munmap(0x8afa33000,0x1000)
 45845/235451  rustc.bin 165.173257 RET   munmap 0
 45845/235451  rustc.bin 165.173415 CALL  munmap(0x92e851000,0x1000)
 45845/235451  rustc.bin 165.173472 RET   munmap 0
 45845/235451  rustc.bin 165.173599 CALL  munmap(0x95d903000,0x1000)
 45845/235451  rustc.bin 165.173644 RET   munmap 0
 45845/235451  rustc.bin 165.173664 CALL  
sigprocmask(SIG_SETMASK,~0x20<SIGABRT>)
 45845/235451  rustc.bin 165.173685 RET   sigprocmask 0<>
 45845/235451  rustc.bin 165.173756 CALL  thrkill(0,SIGABRT,0)
 45845/235451  rustc.bin 165.173789 PSIG  SIGABRT SIG_DFL

 45845/262821  rustc.bin 165.172896 CALL  munmap(0x927c45000,0x2000)
 45845/262821  rustc.bin 165.172973 RET   munmap 0
 45845/262821  rustc.bin 165.173274 CALL  munmap(0x8ebf9a000,0x2000)
 45845/262821  rustc.bin 165.173349 RET   munmap 0
 45845/262821  rustc.bin 165.173359 CALL  munmap(0x9967ec000,0x2000)
 45845/262821  rustc.bin 165.173428 RET   munmap 0
 45845/262821  rustc.bin 165.173463 CALL  munmap(0x981c18000,0xc000)
 45845/262821  rustc.bin 165.173610 RET   munmap 0
 45845/262821  rustc.bin 165.173674 CALL  getpid()
 45845/262821  rustc.bin 165.173691 RET   getpid 45845/0xb315

 45845/409631  rustc.bin 161.466630 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 45845/409631  rustc.bin 161.466664 RET   mmap 40181518336/0x95b015000
 45845/409631  rustc.bin 161.466803 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 45845/409631  rustc.bin 161.466855 RET   mmap 40434515968/0x96a15c000
 45845/409631  rustc.bin 161.466942 CALL  
mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
 45845/409631  rustc.bin 161.467034 RET   mmap 40030756864/0x95204e000
 45845/409631  rustc.bin 161.467099 CALL  
__thrsleep(0x94076da00,CLOCK_REALTIME,0,0x8c5edba40,0x94076dac8)
 45845/409631  rustc.bin 161.467922 RET   __thrsleep 0
 45845/409631  rustc.bin 161.467949 CALL  poll(0x9a4f2bb98,1,INFTIM)
 45845/409631  rustc.bin 165.173870 STRU  struct pollfd { fd=4, 
events=0x1<POLLIN>, revents=0<> }

 45845/462087  rustc.bin 165.089563 CALL  munmap(0x9a512d000,0x201000)
 45845/462087  rustc.bin 165.089746 RET   munmap 0
 45845/462087  rustc.bin 165.091536 CALL  
mmap(0,0x201000,0x3<PROT_READ|PROT_WRITE>,0x5002<MAP_PRIVATE|MAP_ANON|MAP_STACK>,-1,0)
 45845/462087  rustc.bin 165.091651 RET   mmap 41424179200/0x9a512d000
 45845/462087  rustc.bin 165.092257 CALL  
mprotect(0x9a512d000,0x1000,0<PROT_NONE>)
 45845/462087  rustc.bin 165.092297 RET   mprotect 0
 45845/462087  rustc.bin 165.094831 CALL  __tfork(0x9a512b540,24)
 45845/462087  rustc.bin 165.094855 STRU  struct __tfork { tcb=0x8fa4280f8, 
tid=0x8fa4280dc, stack=0x9a532d020 }
 45845/462087  rustc.bin 165.094941 RET   __tfork 235451/0x397bb
 45845/462087  rustc.bin 165.094995 CALL  
__thrsleep(0x91fdd4600,CLOCK_REALTIME,0,0x900ecf0c0,0x91fdd46c8)

-- 
Sebastien Marie

Reply via email to