Commit graph

22855 commits

Author SHA1 Message Date
kosaki
fa319c5774 fix incorrect native_cond_signal call when deadlock was detected.
* thread.c (lock_func): timedwait don't touch cond_waiting and
  cond_notifid variables.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-07 06:20:39 +00:00
kosaki
94e4d61bda fix win32 native_cond_timedwait() makes SIGSEGV.
* thread_win32.h (rb_thread_cond_struct): add prev field instead of last.
  (ie cond_event_entry is now using double linked list instead of single)
* thread_win32.c (cond_event_entry): add prev field.

* thread_win32.c (__cond_timedwait): remove entry properly if timeout
  was happen.

* thread_win32.c (native_cond_signal): change for double linked list.
* thread_win32.c (native_cond_broadcast): ditto.
* thread_win32.c (native_cond_initialize): ditto.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-07 06:17:59 +00:00
kosaki
471fb33b1a fix mutex deadlock test hang-up.
* thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
  mistake. (ie fix hang-up native_cond_timedwait())



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-07 03:43:27 +00:00
kosaki
7ac6b706b4 sleep_cond use monotonic time if possible.
* thread_pthread.c (native_thread_init): change sleep_cond
  attribute to monotonic.
* thread_pthread.c (native_sleep): use native_cond_timeout().

* thread_pthread.c (native_cond_timeout): add overflow care.
* thread_win32.c (native_cond_timeout): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 18:17:14 +00:00
akr
2d7a5f6553 update doc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 18:14:25 +00:00
kosaki
604a1e2e22 fix win32 compile error.
* thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
  RB_CONDATTR_CLOCK_MONOTONIC always.
* thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 17:50:23 +00:00
kosaki
b2ea836ae7 mutex: deadlock check timeout use monotonic time.
* thread_pthread.c (native_cond_timeout): new internal api.
  it calculate a proper time for argument of native_cond_timedwait().
* thread_win32.c (native_cond_timeout): ditto.

* thread_pthread.c (thread_timer): use native_cond_timeout()
  instead of get_ts.
* thread.c (lock_func): ditto.

* thread_pthread.c (get_ts): removed. use native_cond_timeout().
* thread.c (init_lock_timeout): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 17:39:32 +00:00
kosaki
54b50fbb9c * thread_pthread.c (get_ts): add monotonic clock capability.
* thread_pthread.c (rb_thread_create_timer_thread): use monotonic
  clock if possible.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 16:56:06 +00:00
svn
17707b2d48 * 2011-05-07
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31452 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 16:47:44 +00:00
kosaki
a1cfaf4b1f * thread_pthread.h (rb_thread_cond_t): add clockid field. it's
no longer an alias of pthread_cond_t.
* thread_pthread.c: adapt new rb_thread_cond_t type.
* thread.c (mutex_alloc): ditto.
* thread_win32.c (native_cond_initialize): ditto.
* configure.in: add check for pthread_cond_attr_setclock() and
  clockid_t type.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 16:47:38 +00:00
kosaki
4a9883e92f * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
if possible. based on a patch from Eric Wong. [ruby-core:36003].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 14:58:38 +00:00
kosaki
066eecf53a * configure.in: remove nanosleep check. we no longer use it.
r20124 removed last usage.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 14:18:06 +00:00
nobu
31ae13c9c1 set properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 14:02:10 +00:00
nobu
54aa0b1232 * ext/syck/rubyext.c (mktime_do): extra digits are not used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 13:36:02 +00:00
naruse
957ec6fcc8 * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
* ext/syck/syck.h: use #ifdef instead of #if DEBUG.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 08:44:07 +00:00
naruse
1f6a7c18f5 * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
check with LONG_MAX and cast as long; without this the calculation
  will be done as int and overflow.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 08:38:36 +00:00
svn
534388dd17 * 2011-05-06
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 06:19:20 +00:00
shyouhei
e3a69233e6 * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by
silently ignoring lesser significant digits.  Required buffer
  length can be computable so you might at first think of
  allocating enough memory space on the fly using alloca().  That
  is a wrong idea because when using alloca there is always risk
  of integer overflow.  A function that accepts outer-process
  resources like this should not blindly trust its inputs.  In
  this particular case we just want to generate miliseconds
  resolution by strtod() so the string in question needs no more
  length than what we originally have.  Ignoring lesser
  significant digits should suffice I believe.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 06:19:17 +00:00
shyouhei
be237a9d8f ChangeLog for it
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 06:19:14 +00:00
shyouhei
dbbfac20fc YAML.load time correctly parse usecs smaller than 1 fixes #4571
Signed-off-by: URABE, Shyouhei <shyouhei@ruby-lang.org>



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-06 06:19:12 +00:00
kosaki
25d040780f * test/ruby/test_io.rb (TestIO#test_O_CLOEXEC): fix false positive
detection.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-05 14:09:21 +00:00
kosaki
b5d612e0df * thread_pthread.c (native_mutex_reinitialize_atfork): removed
unused macro.
* thread_win32.c (native_mutex_reinitialize_atfork): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-05 13:26:18 +00:00
nobu
66fc78d207 * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
available on all platforms.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-05 13:09:42 +00:00
nagachika
6410a4ae27 * eval.c (frame_func_id): store result of method_entry_of_iseq() to
cfp->me because method_entry_of_iseq() might become expensive.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-05 08:39:22 +00:00
nagachika
5358a5c016 * eval.c (frame_func_id): __method__ return different name from
methods defined by Module#define_method with a same block.
    [ruby-core:35386] fixes #4606
  * eval (method_entry_of_iseq): new helper function. search control
    frame stack for a method entry which has given iseq.
  * test/ruby/test_method.rb: add tests for #4696

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-05 06:32:37 +00:00
svn
09c2f41211 * 2011-05-05
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 23:08:03 +00:00
tenderlove
d3802d719c fix capture to avoid doing a sub on the useconds when parsing dates
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 23:07:58 +00:00
kosaki
f5b0f04d2a * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
is bad.
* benchmark/bm_vm4_thread_pass.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 13:14:28 +00:00
kosaki
674a33edf5 * test/date/test_date_base.rb: don't use no message skip().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 13:10:06 +00:00
kosaki
512624b628 * benchmark/bm_io_select2.rb: reduce number of using file
descriptors. because gdb need some fds.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 12:13:02 +00:00
kosaki
be62297f92 * io.c (Init_IO): Added File::CLOEXEC constant. [ruby-core:22893] [Feature #1291]
* test/ruby/test_io.rb (TestIO#test_o_cloexec): test for File::CLOEXEC.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 11:29:24 +00:00
kosaki
c06da4735d * thread.c (rb_wait_for_single_fd): Fix wrong return value.
* test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
(TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 10:02:06 +00:00
kosaki
2a989121db * ext/-test-/wait_for_single_fd: New. for testing
rb_wait_for_single_fd() internal function.
  The patch was written by Eric Wong. [ruby-core:35991]

* test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 09:50:27 +00:00
kazu
8a98c57ff0 fix a typo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 06:26:13 +00:00
kosaki
951b090130 * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
based on a patch from Eric Wong at [ruby-core:35991].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 03:47:33 +00:00
kosaki
d7fa4d837e * io.c (rb_f_select): remove useless ifdef.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 02:54:34 +00:00
kosaki
9851b0ce2f * ext/socket/init.c (wait_connectable): fix error handling code.
RB_WAITFD_OUT is turned on even though an error occur.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 02:44:28 +00:00
kosaki
4da4cb0421 * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 01:13:02 +00:00
kosaki
82b2e80120 * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]

* ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
  removed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 01:12:04 +00:00
kosaki
cd796c609f * ext/io/wait/wait.c (io_wait): use rb_wait_for_single_fd().
The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 01:09:08 +00:00
kosaki
249fe0e742 * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for rb_wait_for_single_fd().
Now only Linux uses it.

The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 01:07:03 +00:00
kosaki
9be37ca7d5 * thread.c (rb_wait_for_single_fd): new.
* thread.c (select_single): select(2) based backend for rb_wait_for_single_fd().

* io.c (make_writeconv): use rb_wait_for_single_fd() instaed of
  rb_thread_fd_select().
* io.c (rb_io_wait_readable): ditto.
* thread.c (rb_thread_wait_fd_rw): ditto.

* io.c (wait_readable): removed.
* thread.c (init_set_fd): new helper function.
* include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
  new constant for rb_single_wait_fd().

The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-04 00:59:57 +00:00
tenderlove
d47073de04 * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
Syck can load UTC times that Psych dumps.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 23:06:19 +00:00
svn
fb58474627 * 2011-05-04
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 22:37:12 +00:00
kosaki
f081eca1d7 * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
out by Eric Wong. [ruby-core:35982]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 22:37:07 +00:00
kosaki
50522eb351 * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
Skip sticky bit test if the platform is FreeBSD. It doesn't allow to
  change sticky bit if a target is regular file.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 11:31:20 +00:00
yugui
7ad29955a6 * test/date/test_date.rb (TestDate#test_coerce):
test for [ruby-core:35127].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 09:31:13 +00:00
kazu
227609ea96 fix typos and remove some whitespaces
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-03 04:45:28 +00:00
nobu
55a1b1d97a * thread.c (rb_thread_select): preserve errno if no error
occurred.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-02 19:27:59 +00:00
nobu
ab8e05cc45 * win32/win32.c (rb_w32_fdcopy): suppress a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-02 19:27:56 +00:00