Libvips: рд╢реЙрд░реНрдЯ рдпрд╛ рдпреВрд╢реЙрд░реНрдЯ рдЗрдореЗрдЬ рдХреЗ рдЕрдиреБрдорд╛рдирд┐рдд рдХрдирд╡рд▓реНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЕрдЬрдЧрд░ рдпрд╛ libvips рдореЗрдВ segfault

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдирд╡ре░ 2018  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: libvips/libvips

рд╣рд╛рдп рдЬреЙрди,

рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ #резрезремреж рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЕрдиреБрдорд╛рдирд┐рдд рдХрдирд╡рд▓реНрд╢рди рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рдореЗрдВ рдЖрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпреВрд╢реЙрд░реНрдЯ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордпред рдореИрдВ рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ segfault рдХреЛ рдпрд╛ рддреЛ рдЕрдЬрдЧрд░ рдпрд╛ libvips рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдбрдмрд▓ рдлреНрд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдБ рд╣реЛрддреА рд╣реИ, рдпрд╣рд╛рдБ рдХреБрдЫ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдиреАрдЪреЗ libvips.so.42.9.0 рдХреЗ рдЕрдВрджрд░ segfault рд╕реНрдерд╛рди рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣реИ (рдЗрд╕ рд╕рдордп рдбрд┐рдмрдЧрд┐рдВрдЧ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЗрддрдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ)ред

рдореИрдВ рдЕрдЬрдЧрд░ Python 2.7.15 :: Anaconda custom (64-bit) рддрд╣рдд pyvips рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ vips vips-8.7.0-Sun Jan 28 17:23:05 UTC 2018 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

рдиреЛрдЯ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ .py рдлрд╝рд╛рдЗрд▓:
segfault.txt

# /usr/bin/env python
import pyvips

slab = pyvips.Image.new_from_array([[1]*10]*10, scale=100)  # 10x10 moving average

n = 30000 # also segfaults when n=30000.  See note below.

# The following are all fine
uchar_im = pyvips.Image.black(n, n).cast('uchar')  # just to be sure it's uchar
uchar_im.conv(slab, precision='approximate', layers=1).write_to_file('uchar_conv.v')

float_im = pyvips.Image.black(n, n).cast('float')
float_im.conv(slab, precision='approximate', layers=1).write_to_file('float_conv.v')


# EVERY CONVOLUTION BELOW THIS LINE SEGFAULTS

# if n=1, completes by writing result to file, then segfaults in python:
# *** Error in `python': free(): invalid pointer: 0x00005651d79154c0 ***

# if n=30000, does not complete and segfaults in libvips
# [1049087.739802] worker[599]: segfault at 7f4cd631a000 ip 00007f4ce7f93318 sp 00007f4cd2caea70 error 4 in libvips.so.42.9.0[7f4ce7eb6000+1f5000]

ushort_im = pyvips.Image.black(n, n).cast('ushort')
ushort_im.conv(slab.cast('ushort'), precision='approximate', layers=1).write_to_file('ushort_conv.v')  # segfault happens here

ushort_im = pyvips.Image.black(n, n).cast('ushort')
ushort_im.conv(slab, precision='approximate', layers=1).write_to_file('ushort_conv.v')  # segfault would also happen here

short_im = pyvips.Image.black(n, n).cast('short')
short_im.conv(slab, precision='approximate', layers=1).write_to_file('short_conv.v')  # segfault would also happen here

рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдЬрдм n=30000:

Thread 52 "worker" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe64d5700 (LWP 4069)]
0x00007ffff4ab4c7d in ?? () from /usr/lib/libvips.so.42
(gdb) up
#1  0x00007ffff4b4e411 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#2  0x00007ffff4b4f0c9 in vips_region_fill () from /usr/lib/libvips.so.42
(gdb) up
#3  0x00007ffff4b50d53 in vips_region_prepare () from /usr/lib/libvips.so.42
(gdb) up
#4  0x00007ffff4ab65b3 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#5  0x00007ffff4b4e411 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#6  0x00007ffff4b4f0c9 in vips_region_fill () from /usr/lib/libvips.so.42
(gdb) up
#7  0x00007ffff4b50d53 in vips_region_prepare () from /usr/lib/libvips.so.42
(gdb) up
#8  0x00007ffff4b40d59 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#9  0x00007ffff4b4e411 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#10 0x00007ffff4b4f0c9 in vips_region_fill () from /usr/lib/libvips.so.42
(gdb) up
#11 0x00007ffff4b50d53 in vips_region_prepare () from /usr/lib/libvips.so.42
(gdb) up
#12 0x00007ffff4b40d59 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#13 0x00007ffff4b4e411 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#14 0x00007ffff4b4f0c9 in vips_region_fill () from /usr/lib/libvips.so.42
(gdb) up
#15 0x00007ffff4b50d53 in vips_region_prepare () from /usr/lib/libvips.so.42
(gdb) up
#16 0x00007ffff4b40d59 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#17 0x00007ffff4b4e411 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#18 0x00007ffff4b4f615 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#19 0x00007ffff4b50f5f in vips_region_prepare_to () from /usr/lib/libvips.so.42
(gdb) up
#20 0x00007ffff4b48228 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#21 0x00007ffff4b5171b in ?? () from /usr/lib/libvips.so.42
(gdb) up
#22 0x00007ffff4b51504 in ?? () from /usr/lib/libvips.so.42
(gdb) up
#23 0x00007ffff44e0a8a in g_thread_proxy (data=0x5555559df720) from /opt/anaconda/lib/libglib-2.0.so.0
(gdb) up
#24 0x00007ffff77e36ba in start_thread (arg=0x7fffe64d5700) at pthread_create.c:333
333 pthread_create.c: No such file or directory.

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ segfault.txt рд▓рд┐рдВрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ .py рдлрд╝рд╛рдЗрд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ github .py рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдЯреИрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рд╣рд╛рдВ, conva рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдЧреБрдгрд╡рддреНрддрд╛ рдирд╣реАрдВ рд╣реИ, рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ :( рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ред

рдореИрдВ рдХреБрдЫ рдореБрджреНрджрд╛ рдмрд╛рдЧрд╡рд╛рдиреА рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ? рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдХреЗ рд╣рдо рдЦреБрд▓реЗ рдореБрджреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рдмрдВрдзрдиреАрдп рд╕реЗрдЯ рдореЗрдВ рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Kyle-Kyle picture Kyle-Kyle  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

felixbuenemann picture felixbuenemann  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

revathi-murali picture revathi-murali  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

harukizaemon picture harukizaemon  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

helloqhx picture helloqhx  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ