Giter Club home page Giter Club logo

Comments (5)

nevir avatar nevir commented on August 15, 2024

I also get an error when running the unit tests that seems to be related:

  1) Error:
test_with_success_cb_with_404(TestCurbCurlMulti):
TypeError: wrong argument type Fixnum (expected Data)
    /Users/ian/development/atreia/deps/curb/tests/tc_curl_multi.rb:6:in `garbage_collect
    /Users/ian/development/atreia/deps/curb/tests/tc_curl_multi.rb:6:in `teardown'

This isn't consistently reproducible, unfortunately. It seems to occur in ~50% of the runs.

Oddly enough, if you add a puts statement to the end of the test, the error doesn't seem to occur as often, if at all. Race condition of some sort on cleaning up the multi handle?

from curb.

taf2 avatar taf2 commented on August 15, 2024

Here's some additional information, when running valgrind.

valgrind /home/taf2/.local/bin/ruby tests/bug_multi_segfault.rb 
==13822== Memcheck, a memory error detector.
==13822== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==13822== Using LibVEX rev 1884, a library for dynamic binary translation.
==13822== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==13822== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==13822== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==13822== For more details, rerun with: -v
==13822== 
==13822== Invalid read of size 8
==13822==    at 0xBBBC95A: curl_multi_free (curb_multi.c:61)
==13822==    by 0x4E931AD: run_final (gc.c:2349)
==13822==    by 0x4E91532: finalize_list (gc.c:1661)
==13822==    by 0x4E936E6: rb_gc_call_finalizer_at_exit (gc.c:2464)
==13822==    by 0x4E7FD86: ruby_finalize_1 (eval.c:117)
==13822==    by 0x4E7FF19: ruby_cleanup (eval.c:157)
==13822==    by 0x4E80185: ruby_run_node (eval.c:234)
==13822==    by 0x40090A: main (main.c:35)
==13822==  Address 0x10 is not stack'd, malloc'd or (recently) free'd
==13822== 
==13822== Invalid read of size 2
==13822==    at 0x4F8A0D1: rb_vm_get_sourceline (vm.c:680)
==13822==    by 0x4F8A471: rb_sourceline (vm.c:769)
==13822==    by 0x4E7B9AF: rb_bug (error.c:230)
==13822==    by 0x4F1E25D: sigsegv (signal.c:605)
==13822==    by 0x523EE8F: (within /lib64/libpthread-2.10.1.so)
==13822==    by 0xBBBC959: curl_multi_free (curb_multi.c:61)
==13822==    by 0x4E931AD: run_final (gc.c:2349)
==13822==    by 0x4E91532: finalize_list (gc.c:1661)
==13822==    by 0x4E936E6: rb_gc_call_finalizer_at_exit (gc.c:2464)
==13822==    by 0x4E7FD86: ruby_finalize_1 (eval.c:117)
==13822==    by 0x4E7FF19: ruby_cleanup (eval.c:157)
==13822==    by 0x4E80185: ruby_run_node (eval.c:234)
==13822==  Address 0x64f489c is 4 bytes before a block of size 12 alloc'd
==13822==    at 0x4C2563E: malloc (vg_replace_malloc.c:207)
==13822==    by 0x4E8F811: vm_xmalloc (gc.c:624)
==13822==    by 0x4E8F9C1: ruby_xmalloc2 (gc.c:711)
==13822==    by 0x4F64C75: iseq_set_sequence (compile.c:1311)
==13822==    by 0x4F640FE: iseq_setup (compile.c:954)
==13822==    by 0x4F637AA: rb_iseq_compile_node (compile.c:503)
==13822==    by 0x4F75972: rb_iseq_new_with_bopt_and_opt (iseq.c:336)
==13822==    by 0x4F759D4: rb_iseq_new_with_opt (iseq.c:346)
==13822==    by 0x4F75839: rb_iseq_new (iseq.c:304)
==13822==    by 0x4F8CC64: Init_VM (vm.c:1911)
==13822==    by 0x4E9A4B0: rb_call_inits (inits.c:55)
==13822==    by 0x4E7FBC2: ruby_init (eval.c:66)
: [BUG] Segmentation fault
ruby 1.9.1p129 (2009-05-12 revision 23412) [x86_64-linux]

-- control frame ----------
==13822== 
==13822== Conditional jump or move depends on uninitialised value(s)
==13822==    at 0x4F8D02D: control_frame_dump (vm_dump.c:33)
==13822==    by 0x4F8D70F: rb_vmdebug_stack_dump_raw (vm_dump.c:176)
==13822==    by 0x4F8E12C: rb_vm_bugreport (vm_dump.c:575)
==13822==    by 0x4E7B8C1: report_bug (error.c:215)
==13822==    by 0x4E7B9CE: rb_bug (error.c:230)
==13822==    by 0x4F1E25D: sigsegv (signal.c:605)
==13822==    by 0x523EE8F: (within /lib64/libpthread-2.10.1.so)
==13822==    by 0xBBBC959: curl_multi_free (curb_multi.c:61)
==13822==    by 0x4E931AD: run_final (gc.c:2349)
==13822==    by 0x4E91532: finalize_list (gc.c:1661)
==13822==    by 0x4E936E6: rb_gc_call_finalizer_at_exit (gc.c:2464)
==13822==    by 0x4E7FD86: ruby_finalize_1 (eval.c:117)
==13822== 
==13822== Invalid read of size 2
==13822==    at 0x4F8A0D1: rb_vm_get_sourceline (vm.c:680)
==13822==    by 0x4F8D358: control_frame_dump (vm_dump.c:109)
==13822==    by 0x4F8D70F: rb_vmdebug_stack_dump_raw (vm_dump.c:176)
==13822==    by 0x4F8E12C: rb_vm_bugreport (vm_dump.c:575)
==13822==    by 0x4E7B8C1: report_bug (error.c:215)
==13822==    by 0x4E7B9CE: rb_bug (error.c:230)
==13822==    by 0x4F1E25D: sigsegv (signal.c:605)
==13822==    by 0x523EE8F: (within /lib64/libpthread-2.10.1.so)
==13822==    by 0xBBBC959: curl_multi_free (curb_multi.c:61)
==13822==    by 0x4E931AD: run_final (gc.c:2349)
==13822==    by 0x4E91532: finalize_list (gc.c:1661)
==13822==    by 0x4E936E6: rb_gc_call_finalizer_at_exit (gc.c:2464)
==13822==  Address 0x64f489c is 4 bytes before a block of size 12 alloc'd
==13822==    at 0x4C2563E: malloc (vg_replace_malloc.c:207)
==13822==    by 0x4E8F811: vm_xmalloc (gc.c:624)
==13822==    by 0x4E8F9C1: ruby_xmalloc2 (gc.c:711)
==13822==    by 0x4F64C75: iseq_set_sequence (compile.c:1311)
==13822==    by 0x4F640FE: iseq_setup (compile.c:954)
==13822==    by 0x4F637AA: rb_iseq_compile_node (compile.c:503)
==13822==    by 0x4F75972: rb_iseq_new_with_bopt_and_opt (iseq.c:336)
==13822==    by 0x4F759D4: rb_iseq_new_with_opt (iseq.c:346)
==13822==    by 0x4F75839: rb_iseq_new (iseq.c:304)
==13822==    by 0x4F8CC64: Init_VM (vm.c:1911)
==13822==    by 0x4E9A4B0: rb_call_inits (inits.c:55)
==13822==    by 0x4E7FBC2: ruby_init (eval.c:66)
c:0001 p:0000 s:0002 b:0002 l:002628 d:002628 TOP   
---------------------------
-- Ruby level backtrace information-----------------------------------------

-- C level backtrace information -------------------------------------------
0x4f8e26a /home/taf2/.local/lib/libruby.so.1.9(rb_vm_bugreport+0x179) [0x4f8e26a]
0x4e7b8c2 /home/taf2/.local/lib/libruby.so.1.9 [0x4e7b8c2]
0x4e7b9cf /home/taf2/.local/lib/libruby.so.1.9(rb_bug+0xf1) [0x4e7b9cf]
0x4f1e25e /home/taf2/.local/lib/libruby.so.1.9 [0x4f1e25e]
0x523ee90 /lib64/libpthread.so.0 [0x523ee90]
0xbbbc95a /home/taf2/work/curb/ext/curb_core.so [0xbbbc95a]
0x4e931ae /home/taf2/.local/lib/libruby.so.1.9 [0x4e931ae]
0x4e91533 /home/taf2/.local/lib/libruby.so.1.9 [0x4e91533]
0x4e936e7 /home/taf2/.local/lib/libruby.so.1.9(rb_gc_call_finalizer_at_exit+0x278) [0x4e936e7]
0x4e7fd87 /home/taf2/.local/lib/libruby.so.1.9 [0x4e7fd87]
0x4e7ff1a /home/taf2/.local/lib/libruby.so.1.9(ruby_cleanup+0x181) [0x4e7ff1a]
0x4e80186 /home/taf2/.local/lib/libruby.so.1.9(ruby_run_node+0x73) [0x4e80186]
0x40090b /home/taf2/.local/bin/ruby(main+0x4f) [0x40090b]
0x5d31a2d /lib64/libc.so.6(__libc_start_main+0xfd) [0x5d31a2d]
0x4007f9 /home/taf2/.local/bin/ruby [0x4007f9]

[NOTE]
You may encounter a bug of Ruby interpreter. Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

==13822== 
==13822== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 6 from 2)
==13822== malloc/free: in use at exit: 2,949,375 bytes in 15,296 blocks.
==13822== malloc/free: 16,587 allocs, 1,291 frees, 3,507,212 bytes allocated.
==13822== For counts of detected errors, rerun with: -v
==13822== Use --track-origins=yes to see where uninitialised values come from
==13822== searching for pointers to 15,296 not-freed blocks.
==13822== checked 2,165,304 bytes.
==13822== 
==13822== LEAK SUMMARY:
==13822==    definitely lost: 761 bytes in 14 blocks.
==13822==      possibly lost: 51,928 bytes in 925 blocks.
==13822==    still reachable: 2,896,686 bytes in 14,357 blocks.
==13822==         suppressed: 0 bytes in 0 blocks.
==13822== Rerun with --leak-check=full to see details of leaked memory.
Aborted

from curb.

taf2 avatar taf2 commented on August 15, 2024

Okay, I have a fix for the segv, if you pull and test on Mac OSX with ruby 1.9 that'd be very helpful thanks you!

from curb.

nevir avatar nevir commented on August 15, 2024

Looks good on OS X! Thanks for the quick fix :)

from curb.

taf2 avatar taf2 commented on August 15, 2024

Great, I'll spin a new release in a few

from curb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.