jpillora / jpillora/chisel

ARM v5 crash

Open
#491 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
16.6k
Forks
1.6k
PR merge metrics
No merged PRs in 30d

Description

Issue

# ./chisel server -p 9999 -v
runtime: epollwait on fd 3 failed with 38
fatal error: runtime: netpoll failed

runtime stack:
runtime.throw({0x4e9ce7, 0x17})
        runtime/panic.go:1077 +0x4c fp=0xc37710 sp=0xc376fc pc=0x52f64
runtime.netpoll(0x0)
        runtime/netpoll_epoll.go:122 +0x444 fp=0xc37f78 sp=0xc37710 pc=0x4eb18
runtime.sysmon()
        runtime/proc.go:5599 +0x4b4 fp=0xc37fd8 sp=0xc37f78 pc=0x6367c
runtime.mstart1()
        runtime/proc.go:1600 +0x7c fp=0xc37fe8 sp=0xc37fd8 pc=0x59504
runtime.mstart0()
        runtime/proc.go:1557 +0x7c fp=0xc37ffc sp=0xc37fe8 pc=0x59478
runtime.mstart()
        runtime/asm_arm.s:210 +0x8 fp=0xc38000 sp=0xc37ffc pc=0x8c388

goroutine 1 [runnable]:
runtime.asyncPreempt2()
        runtime/preempt.go:307 +0x38 fp=0xc336f4 sp=0xc336e8 pc=0x5492c
runtime.asyncPreempt()
        runtime/preempt_arm.s:44 +0x98 fp=0xc337b0 sp=0xc336f4 pc=0x8eacc
math/bits.Mul64(0x2c9c5501db260cbe, 0xb675d293b2660fbf)
        math/bits/bits.go:482 +0x1c fp=0xc337bc sp=0xc337b4 pc=0x97000
crypto/internal/nistec/fiat.p256Mul(0xc33b64, 0xc7f980, 0xc7e160)
        crypto/internal/nistec/fiat/p256_fiat64.go:101 +0x11c fp=0xc33a74 sp=0xc337bc pc=0x147f98
crypto/internal/nistec/fiat.(*P256Element).Mul(...)
        crypto/internal/nistec/fiat/p256.go:113
crypto/internal/nistec.(*P256Point).Add(0xc0cb70, 0xc0cb60, 0xc0c760)
        crypto/internal/nistec/p256.go:221 +0x4c fp=0xc33b84 sp=0xc33a74 pc=0x181d64
crypto/internal/nistec.(*P256Point).ScalarBaseMult.(*P256Point).generatorTable.func1()
        crypto/internal/nistec/p256.go:401 +0x164 fp=0xc33ba4 sp=0xc33b84 pc=0x18b07c
sync.(*Once).doSlow(0x8252a0, 0x50a13c)
        sync/once.go:74 +0xb8 fp=0xc33bcc sp=0xc33ba4 pc=0xace80
sync.(*Once).Do(0x8252a0, 0x50a13c)
        sync/once.go:65 +0x40 fp=0xc33bd8 sp=0xc33bcc pc=0xacdb8
crypto/internal/nistec.(*P256Point).generatorTable(...)
        crypto/internal/nistec/p256.go:395
crypto/internal/nistec.(*P256Point).ScalarBaseMult(0xc0c750, {0xc7e140, 0x20, 0x20})
        crypto/internal/nistec/p256.go:418 +0x34 fp=0xc33cd4 sp=0xc33bd8 pc=0x183490
crypto/ecdsa.randomPoint[...](0xc018e0, {0x585b98, 0xc72168})
        crypto/ecdsa/ecdsa.go:236 +0x320 fp=0xc33d18 sp=0xc33cd4 pc=0x1d104c
crypto/ecdsa.generateNISTEC[...](0xc018e0, {0x585b98, 0xc72168})
        crypto/ecdsa/ecdsa.go:185 +0x38 fp=0xc33d58 sp=0xc33d18 pc=0x1d1148
crypto/ecdsa.GenerateKey({0x587a8c, 0x80bf08}, {0x585b98, 0xc72168})
        crypto/ecdsa/ecdsa.go:174 +0x240 fp=0xc33d7c sp=0xc33d58 pc=0x1cc78c
github.com/jpillora/chisel/share/ccrypto.seed2PrivateKey({0x0, 0x0})
        github.com/jpillora/chisel/share/ccrypto/keys_helpers.go:47 +0x60 fp=0xc33da0 sp=0xc33d7c pc=0x3be6a8
github.com/jpillora/chisel/share/ccrypto.Seed2PEM({0x0, 0x0})
        github.com/jpillora/chisel/share/ccrypto/keys_helpers.go:28 +0x24 fp=0xc33dbc sp=0xc33da0 pc=0x3be534
github.com/jpillora/chisel/server.NewServer(0xc78a80)
        github.com/jpillora/chisel/server/server.go:102 +0x67c fp=0xc33ee8 sp=0xc33dbc pc=0x449090
main.server({0xc16070, 0x3, 0x4})
        github.com/jpillora/chisel/main.go:244 +0xb34 fp=0xc33f64 sp=0xc33ee8 pc=0x44d2f8
main.main()
        github.com/jpillora/chisel/main.go:61 +0x32c fp=0xc33fa0 sp=0xc33f64 pc=0x44c5dc
runtime.main()
        runtime/proc.go:267 +0x338 fp=0xc33fec sp=0xc33fa0 pc=0x56388
runtime.goexit()
        runtime/asm_arm.s:859 +0x4 fp=0xc33fec sp=0xc33fec pc=0x8df84

goroutine 2 [force gc (idle)]:
runtime.gopark(0x50998c, 0x812ea0, 0x11, 0x14, 0x1)
        runtime/proc.go:398 +0x104 fp=0xc24fd4 sp=0xc24fc0 pc=0x56920
runtime.goparkunlock(...)
        runtime/proc.go:404
runtime.forcegchelper()
        runtime/proc.go:322 +0xe4 fp=0xc24fec sp=0xc24fd4 pc=0x5675c
runtime.goexit()
        runtime/asm_arm.s:859 +0x4 fp=0xc24fec sp=0xc24fec pc=0x8df84
created by runtime.init.5 in goroutine 1
        runtime/proc.go:310 +0x1c

goroutine 3 [GC sweep wait]:
runtime.gopark(0x50998c, 0x8136a0, 0xc, 0x14, 0x1)
        runtime/proc.go:398 +0x104 fp=0xc257c4 sp=0xc257b0 pc=0x56920
runtime.goparkunlock(...)
        runtime/proc.go:404
runtime.bgsweep(0xc42000)
        runtime/mgcsweep.go:280 +0xa8 fp=0xc257e4 sp=0xc257c4 pc=0x3e400
runtime.gcenable.func1()
        runtime/mgc.go:200 +0x28 fp=0xc257ec sp=0xc257e4 pc=0x2ddac
runtime.goexit()
        runtime/asm_arm.s:859 +0x4 fp=0xc257ec sp=0xc257ec pc=0x8df84
created by runtime.gcenable in goroutine 1
        runtime/mgc.go:200 +0x74

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x50998c, 0x8139a8, 0xd, 0x14, 0x2)
        runtime/proc.go:398 +0x104 fp=0xc25fb4 sp=0xc25fa0 pc=0x56920
runtime.goparkunlock(...)
        runtime/proc.go:404
runtime.(*scavengerState).park(0x8139a8)
        runtime/mgcscavenge.go:425 +0x68 fp=0xc25fc8 sp=0xc25fb4 pc=0x3b028
runtime.bgscavenge(0xc42000)
        runtime/mgcscavenge.go:653 +0x3c fp=0xc25fe4 sp=0xc25fc8 pc=0x3b8f8
runtime.gcenable.func2()
        runtime/mgc.go:201 +0x28 fp=0xc25fec sp=0xc25fe4 pc=0x2dd58
runtime.goexit()
        runtime/asm_arm.s:859 +0x4 fp=0xc25fec sp=0xc25fec pc=0x8df84
created by runtime.gcenable in goroutine 1
        runtime/mgc.go:201 +0xbc

goroutine 5 [finalizer wait]:
runtime.gopark(0x509830, 0x824e94, 0x10, 0x14, 0x1)
        runtime/proc.go:398 +0x104 fp=0xc26788 sp=0xc26774 pc=0x56920
runtime.runfinq()
        runtime/mfinal.go:193 +0x110 fp=0xc267ec sp=0xc26788 pc=0x2cc00
runtime.goexit()
        runtime/asm_arm.s:859 +0x4 fp=0xc267ec sp=0xc267ec pc=0x8df84
created by runtime.createfing in goroutine 1
        runtime/mfinal.go:163 +0x5c

Architecture

# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 540.67
Features        : swp half fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5

Hardware        : ARM-Versatile PB
Revision        : 0000
Serial          : 0000000000000000

Additional info

Maybe be related https://github.com/golang/go/issues/24980

# ./chisel --version
1.9.1

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the ARM v5 reproduction command and trace the startup path through main.go, server/server.go, and share/ccrypto/keys_helpers.go, where the stack reaches crypto/ecdsa.GenerateKey. Compare the failure with the linked Go issue and verify the server starts without the runtime netpoll crash on the reported ARM926EJ-S environment.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.