Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to Contribute Go

How to Contribute Go

Go Conference 2016 Spring


Shinji Tanaka

April 23, 2016


  1. How to 
 Contribute Go Hatena Co., Ltd. Shinji Tanaka

  2. Shinji Tanaka @stanaka / id:stanaka Hatena Co., Ltd. CTO 2

  3. One day, a tool couldn’t start • only on Amazon

    Linux 2016.03 $ some-tool (linux/386 build) Trace/breakpoint trap $
  4. >> Trace/breakpoint trap <<

  5. modify_ldt • System call called at the boot process of

    Go 386 binary. • Disabled on Amazon Linux 2016.04 $ cat /boot/config-4.4.5-15.26.amzn1.x86_64 \ | grep MODIFY_LDT # CONFIG_MODIFY_LDT_SYSCALL is not set https://github.com/golang/go/issues/14795
  6. Die or Contribute • O.K. Let’s contribute.

  7. How to fix it (partial diff) https://github.com/golang/go/commit/ 0f86d1edfb87fddb2c7f50d177b67f48219151f3

  8. Go’s Assembler • It’s like a Plan-9 assembler TEXT runtime·profileloop(SB),NOSPLIT,$8

    MOVQ $runtime·profileloop1(SB), CX MOVQ CX, 0(SP) CALL runtime·externalthreadhandler(SB) RET
  9. Merged!!

  10. Go contribute Outline


  12. File an Issues on GitHub • https://github.com/golang/go/issues/14795

  13. git codereview • Subcommand of git for Go code review.

    git codereview change git codereview mail git codereview … [alias] change = codereview change gofmt = codereview gofmt mail = codereview mail pending = codereview pending submit = codereview submit sync = codereview sync
  14. git codereview change • Make a change on some branch

    • Same as git codereview change git checkout -b branch git branch --set-upstream-to origin/master git commit
  15. Detailed commit message runtime: use set_thread_area instead of modify_ldt on

    linux/386 linux/386 depends on modify_ldt system call, but recent Linux kernels can disable this system call. Any Go programs built as linux/386 crash with the message 'Trace/ breakpoint trap'. The kernel config CONFIG_MODIFY_LDT_SYSCALL, which control enable/disable modify_ldt, is disabled on Amazon Linux 2016.03. This fixes this problem by using set_thread_area instead of modify_ldt on linux/386. Fixes #14795.
  16. git codereview mail • Push to go-review • Same as

    git codereview mail git push origin HEAD:refs/for/master.
  17. Revise the commit • change & mail again

  18. Gerrit https://go-review.googlesource.com/

  19. Code reviewing #1

  20. Code reviewing #2

  21. Save as Draft & Reply

  22. Merged!! • ‘Code-Review +2’ is required. • +2 approved •

    +1 LGTM, but not approved • Maybe this fix released with Go 1.7?
  23. Let’s Contribute Go We’re hiring