Skip to content

Rolling min/max gives malloc error #30726

Closed
@Arsilla

Description

@Arsilla

Code Sample

import pandas as pd
import numpy as np
import skimage
from scipy import signal

for orient in [0, 1]:
    th = int(input_img.shape[orient] / 100)

    peaks, info = signal.find_peaks(1 - bw_img.mean(orient), prominence=.35, width=2)
    for pk, w in zip(peaks, info['widths']):
        w *= 2
        if orient == 0:
            sign = bw_img[:, pk]
        else:
            sign = bw_img[pk, :]
        sign = pd.Series(sign).rolling(th).max()

Problem description

The above snippet is part of a function called in my main script. Running this results in either a malloc: Incorrect checksum for freed object 0x7fbf626f1f30: probably modified after being freed. error or a segmentation fault.
The culprit appears to be the rolling().max() line, since commenting out the line fixes the issue, as does replacing .max() with .mean().

I can't seem to recreate the error running the above snippet alone, and I cannot figure out why. The input (bw_img) is just a 2D array (black and white image).

It might be related to this issue #25893 expect my memory doesn't seem to be leaking. The two variants I keep seeing seem to be a checksum failed after changing deallocated memory, or that an attempted change of deallocated memory is caught.

python version: 3.6.5 (also tested on 3.7.0)
pandas version 0.25.3 (also tested 0.24 and 0.23)

Below the stacktrace:

Process:               python3.6 [61410]
Path:                  /Users/USER/*/python3.6
Identifier:            python3.6
Version:               ???
Code Type:             X86-64 (Native)
Parent Process:        zsh [41537]
Responsible:           python3.6 [61410]
User ID:               305159407

Date/Time:             2020-01-06 09:43:30.365 +0100
OS Version:            Mac OS X 10.14.3 (18D109)
Report Version:        12
Bridge OS Version:     3.0 (14Y674)
Anonymous UUID:        842CB73B-82E5-7A43-1D47-0BCD9BFB56A9


Time Awake Since Boot: 5500 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called
python(61410,0x1134fe5c0) malloc: Incorrect checksum for freed object 0x7f8c83801610: probably modified after being freed.
Corrupt value: 0x28
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff5b5fb23e __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff5b6b1c1c pthread_kill + 285
2   libsystem_c.dylib             	0x00007fff5b5641c9 abort + 127
3   libsystem_malloc.dylib        	0x00007fff5b6736e2 malloc_vreport + 545
4   libsystem_malloc.dylib        	0x00007fff5b68786c malloc_zone_error + 184
5   libsystem_malloc.dylib        	0x00007fff5b670103 tiny_free_list_remove_ptr + 544
6   libsystem_malloc.dylib        	0x00007fff5b66daee tiny_free_no_lock + 933
7   libsystem_malloc.dylib        	0x00007fff5b66d631 free_tiny + 483
8   _multiarray_umath.cpython-36m-darwin.so	0x0000000109b3357d _buffer_clear_info + 109
9   _multiarray_umath.cpython-36m-darwin.so	0x0000000109b334ff _dealloc_cached_buffer_info + 79
10  _multiarray_umath.cpython-36m-darwin.so	0x0000000109ae5152 array_dealloc + 18
11  window.cpython-36m-darwin.so  	0x000000012c56a8a6 __pyx_fuse_9__pyx_f_6pandas_5_libs_6window__roll_min_max(tagPyArrayObject_fields*, long, long, _object*, _object*, int) + 3206
12  window.cpython-36m-darwin.so  	0x000000012c569619 __pyx_fuse_9__pyx_pw_6pandas_5_libs_6window_59roll_max(_object*, _object*, _object*) + 425
13  algos.cpython-36m-darwin.so   	0x000000012aa1a42c __pyx_FusedFunction_call + 812
14  python                        	0x0000000109410ae5 PyObject_Call + 101
15  python                        	0x00000001094eea1b _PyEval_EvalFrameDefault + 25787
16  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
17  python                        	0x00000001094f2aeb fast_function + 411
18  python                        	0x00000001094f1729 call_function + 553
19  python                        	0x00000001094ee694 _PyEval_EvalFrameDefault + 24884
20  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
21  python                        	0x00000001094f2aeb fast_function + 411
22  python                        	0x00000001094f1729 call_function + 553
23  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
24  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
25  python                        	0x00000001094f2ede _PyFunction_FastCallDict + 606
26  python                        	0x0000000109410cba _PyObject_FastCallDict + 202
27  python                        	0x0000000109410e6c _PyObject_Call_Prepend + 156
28  python                        	0x0000000109410ae5 PyObject_Call + 101
29  python                        	0x00000001094eea1b _PyEval_EvalFrameDefault + 25787
30  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
31  python                        	0x00000001094f2ede _PyFunction_FastCallDict + 606
32  python                        	0x0000000109410cba _PyObject_FastCallDict + 202
33  python                        	0x0000000109410e6c _PyObject_Call_Prepend + 156
34  python                        	0x0000000109410ae5 PyObject_Call + 101
35  python                        	0x00000001094eea1b _PyEval_EvalFrameDefault + 25787
36  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
37  python                        	0x00000001094f2aeb fast_function + 411
38  python                        	0x00000001094f1729 call_function + 553
39  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
40  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
41  python                        	0x00000001094f2aeb fast_function + 411
42  python                        	0x00000001094f1729 call_function + 553
43  python                        	0x00000001094ee694 _PyEval_EvalFrameDefault + 24884
44  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
45  python                        	0x00000001094f2aeb fast_function + 411
46  python                        	0x00000001094f1729 call_function + 553
47  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
48  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
49  python                        	0x00000001094e84d0 PyEval_EvalCode + 48
50  python                        	0x000000010952156e PyRun_FileExFlags + 174
51  python                        	0x0000000109520b1a PyRun_SimpleFileExFlags + 266
52  python                        	0x000000010953d8b6 Py_Main + 3542
53  python                        	0x0000000109405c78 main + 248
54  libdyld.dylib                 	0x00007fff5b4bbed9 start + 1

Thread 1:
0   libsystem_kernel.dylib        	0x00007fff5b5f87de __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff5b6b2593 _pthread_cond_wait + 724
2   python                        	0x0000000109539f1f PyThread_acquire_lock_timed + 351
3   python                        	0x000000010954099f acquire_timed + 111
4   python                        	0x000000010954071c lock_PyThread_acquire_lock + 44
5   python                        	0x000000010945fbfb _PyCFunction_FastCallDict + 475
6   python                        	0x00000001094f175a call_function + 602
7   python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
8   python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
9   python                        	0x00000001094f2aeb fast_function + 411
10  python                        	0x00000001094f1729 call_function + 553
11  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
12  python                        	0x00000001094f2356 _PyEval_EvalCodeWithName + 2902
13  python                        	0x00000001094f2aeb fast_function + 411
14  python                        	0x00000001094f1729 call_function + 553
15  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
16  python                        	0x00000001094f2b89 fast_function + 569
17  python                        	0x00000001094f1729 call_function + 553
18  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
19  python                        	0x00000001094f2b89 fast_function + 569
20  python                        	0x00000001094f1729 call_function + 553
21  python                        	0x00000001094ee608 _PyEval_EvalFrameDefault + 24744
22  python                        	0x00000001094f3069 _PyFunction_FastCallDict + 1001
23  python                        	0x0000000109410cba _PyObject_FastCallDict + 202
24  python                        	0x0000000109410e6c _PyObject_Call_Prepend + 156
25  python                        	0x0000000109410ae5 PyObject_Call + 101
26  python                        	0x0000000109541216 t_bootstrap + 70
27  libsystem_pthread.dylib       	0x00007fff5b6af305 _pthread_body + 126
28  libsystem_pthread.dylib       	0x00007fff5b6b226f _pthread_start + 70
29  libsystem_pthread.dylib       	0x00007fff5b6ae415 thread_start + 13

Thread 2:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 3:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 4:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 5:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 6:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 7:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 8:
0   libsystem_pthread.dylib       	0x00007fff5b6ae3f8 start_wqthread + 0
1   ???                           	0x0000000054485244 0 + 1414025796

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00000001134fe5c0  rcx: 0x00007ffee67f8168  rdx: 0x0000000000000000
  rdi: 0x0000000000000307  rsi: 0x0000000000000006  rbp: 0x00007ffee67f81a0  rsp: 0x00007ffee67f8168
   r8: 0x0000000000000000   r9: 0x00007ffee67f80c0  r10: 0x0000000000000000  r11: 0x0000000000000206
  r12: 0x0000000000000307  r13: 0x0000000111e4d000  r14: 0x0000000000000006  r15: 0x000000000000002d
  rip: 0x00007fff5b5fb23e  rfl: 0x0000000000000206  cr2: 0x00007fff8e27a188
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133


VM Region Summary:
ReadOnly portion of Libraries: Total=708.7M resident=0K(0%) swapped_out_or_unallocated=708.7M(100%)
Writable regions: Total=483.8M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=483.8M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        2 
Dispatch continuations            16.0M        2 
Kernel Alloc Once                    8K        2 
MALLOC                           170.5M       33 
MALLOC guard page                   16K        5 
MALLOC_LARGE (reserved)            256K        3         reserved VM address space (unallocated)
STACK GUARD                         36K       10 
Stack                             24.6M       10 
VM_ALLOCATE                      102.3M      174 
VM_ALLOCATE (reserved)           160.0M        4         reserved VM address space (unallocated)
__DATA                            42.7M      669 
__FONT_DATA                          4K        2 
__LINKEDIT                       253.2M      312 
__TEXT                           455.5M      557 
__UNICODE                          564K        2 
shared memory                       12K        4 
===========                     =======  ======= 
TOTAL                              1.2G     1775 
TOTAL, minus reserved VM space     1.0G     1775 


Metadata

Metadata

Assignees

No one assigned

    Labels

    PerformanceMemory or execution speed performanceWindowrolling, ewma, expanding

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions