Skip to content
Snippets Groups Projects
  1. Dec 13, 2016
    • bors's avatar
      Auto merge of #472 - BrandonSchaefer:wifsignaled-fix, r=alexcrichton · fb8587d3
      bors authored
      When checking the status from waitpid on a kill -STOP <child_pid> WIFSIGNALED returns true
      
      Currently in WIFSIGNALED rust is doing:
      (status & 0x7f) + 1
      where status is i32
      
      As defined in /usr/include/x86_64-linux-gnu/bits/waitstatus.h
      #define __WIFSIGNALED(status) \
        (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
      
      Here is an example of the issue:
      http://paste2.org/fXc8BxJ0
      
      Run it, and it'll print the child pid then:
      kill -STOP <child_pid>
      
      Expect:
        Stopped by signal print statement
      Results:
        Killed by signal print statement
      
      Using the i32, it wont overflow leaving you with 128 returning true, using the waitstatus define you'll end up with -64 (since it shifts 1 right) which would return false. Though the C version shifts right once not really sure *why* but theres most likely a reason somewhere.
      
      For the fix, just cast to i8 (signed char pretty much) as the C version is doing.
      
      RUNNING ALL TESTS
      PASSED 7356 tests
      fb8587d3
    • Brandon Schaefer's avatar
  2. Dec 07, 2016
  3. Dec 06, 2016
  4. Dec 05, 2016
  5. Dec 04, 2016
  6. Dec 03, 2016
  7. Dec 02, 2016
  8. Nov 29, 2016
  9. Nov 28, 2016
  10. Nov 26, 2016
  11. Nov 19, 2016
  12. Nov 18, 2016
  13. Nov 17, 2016
Loading