Skip to content

Instantly share code, notes, and snippets.

@jeffknupp
Last active July 27, 2017 00:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeffknupp/73879feacf9c560afd4f1a20213dc6ef to your computer and use it in GitHub Desktop.
Save jeffknupp/73879feacf9c560afd4f1a20213dc6ef to your computer and use it in GitHub Desktop.
Stack trace of bug where jemalloc hangs during large memory reallocation initiated by Arrow
Thread 1 "python3" received signal SIGINT, Interrupt.
je_spin_adaptive (spin=<synthetic pointer>) at include/jemalloc/internal/spin.h:40
40 include/jemalloc/internal/spin.h: No such file or directory.
(gdb) where
#0 je_spin_adaptive (spin=<synthetic pointer>) at include/jemalloc/internal/spin.h:40
#1 chunk_dss_max_update (new_addr=<optimized out>) at src/chunk_dss.c:83
#2 je_chunk_alloc_dss (tsdn=tsdn@entry=0x7ffff7fe8620, arena=arena@entry=0x7fffc0200140, new_addr=new_addr@entry=0x7fff37e00000, size=size@entry=2097152, alignment=alignment@entry=2097152,
zero=zero@entry=0x7fffffffbac0, commit=commit@entry=0x7fffffffba10) at src/chunk_dss.c:122
#3 0x00007fffd346369f in chunk_alloc_core (dss_prec=dss_prec_secondary, commit=0x7fffffffba10, zero=0x7fffffffbac0, alignment=2097152, size=2097152, new_addr=0x7fff37e00000, arena=0x7fffc0200140,
tsdn=0x7ffff7fe8620) at src/chunk.c:357
#4 chunk_alloc_default_impl (commit=0x7fffffffba10, zero=0x7fffffffbac0, alignment=2097152, size=2097152, new_addr=0x7fff37e00000, arena=0x7fffc0200140, tsdn=0x7ffff7fe8620) at src/chunk.c:430
#5 je_chunk_alloc_wrapper (tsdn=tsdn@entry=0x7ffff7fe8620, arena=arena@entry=0x7fffc0200140, chunk_hooks=chunk_hooks@entry=0x7fffffffba30, new_addr=new_addr@entry=0x7fff37e00000, size=size@entry=2097152,
alignment=2097152, sn=sn@entry=0x7fffffffba20, zero=zero@entry=0x7fffffffbac0, commit=commit@entry=0x7fffffffba10) at src/chunk.c:490
#6 0x00007fffd3457097 in arena_chunk_ralloc_huge_expand_hard (cdiff=2097152, udiff=2097152, nchunk=0x7fff37e00000, zero=0x7fffffffbac0, sn=0x7fffffffba20, usize=4194304, oldsize=2097152,
chunk=0x7fff37c00000, chunk_hooks=0x7fffffffba30, arena=0x7fffc0200140, tsdn=0x7ffff7fe8620) at src/arena.c:1040
#7 je_arena_chunk_ralloc_huge_expand (tsdn=tsdn@entry=0x7ffff7fe8620, arena=arena@entry=0x7fffc0200140, chunk=chunk@entry=0x7fff37c00000, oldsize=oldsize@entry=2097152, usize=usize@entry=4194304,
zero=zero@entry=0x7fffffffbac0) at src/arena.c:1086
#8 0x00007fffd3471032 in huge_ralloc_no_move_expand (tsdn=0x7ffff7fe8620, ptr=ptr@entry=0x7fff37c00000, oldsize=oldsize@entry=2097152, usize=usize@entry=4194304, zero=zero@entry=false) at src/huge.c:274
#9 0x00007fffd3473317 in je_huge_ralloc_no_move (zero=false, usize_max=4194304, usize_min=4194304, oldsize=2097152, ptr=0x7fff37c00000, tsdn=0x7ffff7fe8620, tsdn@entry=0x0) at src/huge.c:319
#10 je_huge_ralloc (tsd=tsd@entry=0x7ffff7fe8620, arena=arena@entry=0x0, ptr=ptr@entry=0x7fff37c00000, oldsize=oldsize@entry=2097152, usize=usize@entry=4194304, alignment=alignment@entry=64, zero=false,
tcache=tcache@entry=0x7fff3ac0d000) at src/huge.c:377
#11 0x00007fffd345c3bd in je_arena_ralloc (tsd=0x7ffff7fe8620, arena=arena@entry=0x0, ptr=ptr@entry=0x7fff37c00000, oldsize=oldsize@entry=2097152, size=size@entry=4194304, alignment=alignment@entry=64,
zero=zero@entry=false, tcache=tcache@entry=0x7fff3ac0d000) at src/arena.c:3351
#12 0x00007fffd344f27b in je_iralloct (arena=0x0, tcache=0x7fff3ac0d000, zero=false, alignment=64, size=4194304, oldsize=2097152, ptr=0x7fff37c00000, tsd=<optimized out>)
at include/jemalloc/internal/jemalloc_internal.h:1253
#13 rallocx (ptr=0x7fff37c00000, size=4194304, flags=<optimized out>) at src/jemalloc.c:2408
#14 0x00007fffd331fb30 in arrow::DefaultMemoryPool::Reallocate(long, long, unsigned char**) () from /usr/local/lib/python3.6/site-packages/pyarrow/libarrow.so.0
#15 0x00007fffd32f3764 in arrow::PoolBuffer::Reserve(long) () from /usr/local/lib/python3.6/site-packages/pyarrow/libarrow.so.0
#16 0x00007fffd32f3811 in arrow::PoolBuffer::Resize(long, bool) () from /usr/local/lib/python3.6/site-packages/pyarrow/libarrow.so.0
#17 0x00007fffd3345a10 in arrow::io::BufferOutputStream::Reserve(long) () from /usr/local/lib/python3.6/site-packages/pyarrow/libarrow.so.0
#18 0x00007fffd3345a76 in arrow::io::BufferOutputStream::Write(unsigned char const*, long) () from /usr/local/lib/python3.6/site-packages/pyarrow/libarrow.so.0
#19 0x00007fffd0d74620 in parquet::ArrowOutputStream::Write(unsigned char const*, long) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#20 0x00007fffd0d4727a in parquet::SerializedPageWriter::WriteDictionaryPage(parquet::DictionaryPage const&) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#21 0x00007fffd0d19499 in parquet::TypedColumnWriter<parquet::DataType<(parquet::Type::type)5> >::WriteDictionaryPage() () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#22 0x00007fffd0d148c6 in parquet::ColumnWriter::Close() () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#23 0x00007fffd0ce8600 in arrow::Status parquet::arrow::FileWriter::Impl::TypedWriteBatch<parquet::DataType<(parquet::Type::type)5>, arrow::DoubleType>(parquet::ColumnWriter*, std::shared_ptr<arrow::Array> const&, long, short const*, short const*) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#24 0x00007fffd0ce5d95 in parquet::arrow::FileWriter::Impl::WriteColumnChunk(arrow::Array const&) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#25 0x00007fffd0ce660d in parquet::arrow::FileWriter::WriteColumnChunk(arrow::Array const&) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#26 0x00007fffd0ce68b1 in parquet::arrow::FileWriter::WriteTable(arrow::Table const&, long) () from /usr/local/lib/python3.6/site-packages/pyarrow/libparquet.so.1
#27 0x00007fffbffe9053 in __pyx_pw_7pyarrow_8_parquet_13ParquetWriter_5write_table(_object*, _object*, _object*) ()
from /usr/local/lib/python3.6/site-packages/pyarrow/_parquet.cpython-36m-x86_64-linux-gnu.so
#28 0x00000000004f47bb in _PyCFunction_FastCallDict (kwargs=<optimized out>, nargs=<optimized out>, args=<optimized out>, func_obj=0x7fff5895bb88) at Objects/methodobject.c:231
#29 _PyCFunction_FastCallKeywords () at Objects/methodobject.c:294
#30 0x000000000054d5e9 in call_function () at Python/ceval.c:4842
#31 0x00000000005469da in _PyEval_EvalFrameDefault () at Python/ceval.c:3344
#32 0x0000000000544d5f in PyEval_EvalFrameEx (throwflag=0, f=0x21ecb9f8) at Python/ceval.c:751
#33 _PyEval_EvalCodeWithName () at Python/ceval.c:4172
#34 0x000000000054e73b in fast_function () at Python/ceval.c:4983
#35 0x000000000054d6cc in call_function () at Python/ceval.c:4863
#36 0x0000000000545aea in _PyEval_EvalFrameDefault () at Python/ceval.c:3328
#37 0x0000000000544d5f in PyEval_EvalFrameEx (throwflag=0, f=0x7fffa67f1dd8) at Python/ceval.c:751
#38 _PyEval_EvalCodeWithName () at Python/ceval.c:4172
#39 0x000000000054e73b in fast_function () at Python/ceval.c:4983
#40 0x000000000054d6cc in call_function () at Python/ceval.c:4863
#41 0x0000000000545aea in _PyEval_EvalFrameDefault () at Python/ceval.c:3328
---Type <return> to continue, or q <return> to quit---
#42 0x000000000054e67d in PyEval_EvalFrameEx (throwflag=0, f=0x1c800398) at Python/ceval.c:751
#43 _PyFunction_FastCall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at Python/ceval.c:4924
#44 fast_function () at Python/ceval.c:4959
#45 0x000000000054d6cc in call_function () at Python/ceval.c:4863
#46 0x0000000000545aea in _PyEval_EvalFrameDefault () at Python/ceval.c:3328
#47 0x000000000054e67d in PyEval_EvalFrameEx (throwflag=0, f=0x7fff54991208) at Python/ceval.c:751
#48 _PyFunction_FastCall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at Python/ceval.c:4924
#49 fast_function () at Python/ceval.c:4959
#50 0x000000000054d6cc in call_function () at Python/ceval.c:4863
#51 0x0000000000545aea in _PyEval_EvalFrameDefault () at Python/ceval.c:3328
#52 0x0000000000544d5f in PyEval_EvalFrameEx (throwflag=0, f=0x980d18) at Python/ceval.c:751
#53 _PyEval_EvalCodeWithName () at Python/ceval.c:4172
#54 0x0000000000544ad3 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=locals@entry=0x7ffff709a1f8,
globals=globals@entry=0x7ffff709a1f8, _co=_co@entry=0x7ffff70145d0) at Python/ceval.c:4193
#55 PyEval_EvalCode (co=co@entry=0x7ffff70145d0, globals=globals@entry=0x7ffff709a1f8, locals=locals@entry=0x7ffff709a1f8) at Python/ceval.c:728
#56 0x0000000000594092 in run_mod () at Python/pythonrun.c:980
#57 0x00000000005944da in PyRun_FileExFlags () at Python/pythonrun.c:933
#58 0x00000000005942bc in PyRun_SimpleFileExFlags () at Python/pythonrun.c:396
#59 0x0000000000599b4f in run_file (p_cf=0x7fffffffd8f0, filename=0x92a2a0 L"scripts/parquet_export.py", fp=0x9bcbd0) at Modules/main.c:338
#60 Py_Main () at Modules/main.c:809
#61 0x00000000004a9039 in main () at ./Programs/python.c:69
#62 0x00007ffff7100830 in __libc_start_main (main=0x4a8f50 <main>, argc=2, argv=0x7fffffffdb08, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdaf8)
at ../csu/libc-start.c:291
#63 0x0000000000591739 in _start ()
(gdb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment