[pypy-issue] [issue901] *** glibc detected *** pypy: corrupted double-linked list: 0x000000000bd76de0 ***
Alexander Milenko
tracker at bugs.pypy.org
Mon Oct 10 20:16:42 CEST 2011
New submission from Alexander Milenko <alvein.flea at gmail.com>:
script contain same strings by same rule... read data from replicated slave
server, write to master. soty if file not of rule
----------
files: pypy-traceback.txt
messages: 3289
nosy: Alvein, pypy-issue
priority: bug
status: unread
title: *** glibc detected *** pypy: corrupted double-linked list: 0x000000000bd76de0 ***
________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue901>
________________________________________
-------------- next part --------------
*** glibc detected *** pypy: corrupted double-linked list: 0x000000000bd76de0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x71ad6)[0x7fde403c0ad6]
/lib/libc.so.6(+0x73508)[0x7fde403c2508]
/lib/libc.so.6(cfree+0x6c)[0x7fde403c584c]
pypy(PyObject_Del+0x11)[0xedc361]
pypy[0xfc9635]
pypy[0xf14c1a]
pypy[0xd07976]
pypy(PyObject_dealloc+0x13)[0xed2ca3]
pypy[0xfc9635]
pypy[0xf156e2]
pypy[0xf3f88e]
pypy[0xf51514]
pypy[0xcd9b9e]
[0x7fde3f3e4cbb]
======= Memory map: ========
00400000-01225000 r-xp 00000000 09:02 31392187 /opt/pypy-env/bin/pypy
01424000-01425000 r--p 00e24000 09:02 31392187 /opt/pypy-env/bin/pypy
01425000-02756000 rw-p 00e25000 09:02 31392187 /opt/pypy-env/bin/pypy
02756000-0275e000 rw-p 00000000 00:00 0
03825000-0f4df000 rw-p 00000000 00:00 0 [heap]
7fde28000000-7fde29b0e000 rw-p 00000000 00:00 0
7fde29b0e000-7fde2c000000 ---p 00000000 00:00 0
7fde2fe00000-7fde30000000 rwxp 00000000 00:00 0
7fde30000000-7fde33fff000 rw-p 00000000 00:00 0
7fde33fff000-7fde34000000 ---p 00000000 00:00 0
7fde352ff000-7fde3530a000 r-xp 00000000 09:02 27574290 /lib/libnss_files-2.11.2.so
7fde3530a000-7fde35509000 ---p 0000b000 09:02 27574290 /lib/libnss_files-2.11.2.so
7fde35509000-7fde3550a000 r--p 0000a000 09:02 27574290 /lib/libnss_files-2.11.2.so
7fde3550a000-7fde3550b000 rw-p 0000b000 09:02 27574290 /lib/libnss_files-2.11.2.so
7fde3550b000-7fde35521000 r-xp 00000000 09:02 27575370 /lib/libgcc_s.so.1
7fde35521000-7fde35720000 ---p 00016000 09:02 27575370 /lib/libgcc_s.so.1
7fde35720000-7fde35721000 rw-p 00015000 09:02 27575370 /lib/libgcc_s.so.1
7fde35725000-7fde35726000 ---p 00000000 00:00 0
7fde35726000-7fde35f26000 rw-p 00000000 00:00 0
7fde35f26000-7fde35f27000 ---p 00000000 00:00 0
7fde35f27000-7fde36727000 rw-p 00000000 00:00 0
7fde36727000-7fde36728000 ---p 00000000 00:00 0
7fde36728000-7fde36f28000 rw-p 00000000 00:00 0
7fde36f28000-7fde36f29000 ---p 00000000 00:00 0
7fde36f29000-7fde37729000 rw-p 00000000 00:00 0
7fde37729000-7fde3772a000 ---p 00000000 00:00 0
7fde3772a000-7fde37f2a000 rw-p 00000000 00:00 0
7fde37f2a000-7fde37f2b000 ---p 00000000 00:00 0
7fde37f2b000-7fde3872b000 rw-p 00000000 00:00 0
7fde3872b000-7fde3872c000 ---p 00000000 00:00 0
7fde3872c000-7fde38f2c000 rw-p 00000000 00:00 0
7fde38f2c000-7fde38f2d000 ---p 00000000 00:00 0
7fde38f2d000-7fde3972d000 rw-p 00000000 00:00 0
7fde3972d000-7fde3972e000 ---p 00000000 00:00 0
7fde3972e000-7fde39f2e000 rw-p 00000000 00:00 0
7fde39f2e000-7fde39f2f000 ---p 00000000 00:00 0
7fde39f2f000-7fde3a72f000 rw-p 00000000 00:00 0
7fde3a72f000-7fde3a730000 ---p 00000000 00:00 0
7fde3a730000-7fde3af30000 rw-p 00000000 00:00 0
7fde3af30000-7fde3af31000 ---p 00000000 00:00 0
7fde3af31000-7fde3b731000 rw-p 00000000 00:00 0
7fde3b731000-7fde3b732000 ---p 00000000 00:00 0
7fde3b732000-7fde3bf32000 rw-p 00000000 00:00 0
7fde3bf32000-7fde3bf33000 ---p 00000000 00:00 0
7fde3bf33000-7fde3c733000 rw-p 00000000 00:00 0
7fde3c733000-7fde3c734000 ---p 00000000 00:00 0
7fde3c734000-7fde3cf34000 rw-p 00000000 00:00 0
7fde3cf34000-7fde3cf35000 ---p 00000000 00:00 0
7fde3cf35000-7fde3d735000 rw-p 00000000 00:00 0
7fde3d735000-7fde3d736000 ---p 00000000 00:00 0
7fde3d736000-7fde3e1bb000 rw-p 00000000 00:00 0
7fde3e23c000-7fde3e746000 rw-p 00000000 00:00 0
7fde3e746000-7fde3e75b000 r-xp 00000000 09:02 27574296 /lib/libnsl-2.11.2.so
7fde3e75b000-7fde3e95a000 ---p 00015000 09:02 27574296 /lib/libnsl-2.11.2.so
7fde3e95a000-7fde3e95b000 r--p 00014000 09:02 27574296 /lib/libnsl-2.11.2.so
7fde3e95b000-7fde3e95c000 rw-p 00015000 09:02 27574296 /lib/libnsl-2.11.2.so
7fde3e95c000-7fde3e95e000 rw-p 00000000 00:00 0
7fde3e95e000-7fde3eb2f000 r-xp 00000000 09:02 43394476 /usr/lib/libmysqlclient_r.so.16.0.0
7fde3eb2f000-7fde3ed2e000 ---p 001d1000 09:02 43394476 /usr/lib/libmysqlclient_r.so.16.0.0
7fde3ed2e000-7fde3ed36000 r--p 001d0000 09:02 43394476 /usr/lib/libmysqlclient_r.so.16.0.0
7fde3ed36000-7fde3ed80000 rw-p 001d8000 09:02 43394476 /usr/lib/libmysqlclient_r.so.16.0.0
7fde3ed80000-7fde3ed81000 rw-p 00000000 00:00 0
7fde3ed81000-7fde3ed8c000 r-xp 00000000 09:02 31408207 /opt/idei/egg/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp/_mysql.pypy-16.so
7fde3ed8c000-7fde3ef8b000 ---p 0000b000 09:02 31408207 /opt/idei/egg/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp/_mysql.pypy-16.so
7fde3ef8b000-7fde3ef90000 rw-p 0000a000 09:02 31408207 /opt/idei/egg/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp/_mysql.pypy-16.so
7fde3ef90000-7fde3f092000 rw-p 00000000 00:00 0
7fde3f094000-7fde3f194000 rwxp 00000000 00:00 0
7fde3f194000-7fde3f317000 rw-p 00000000 00:00 0
7fde3f39a000-7fde3f49a000 rwxp 00000000 00:00 0
7fde3f49a000-7fde3f51b000 rw-p 00000000 00:00 0
7fde3f51f000-7fde3f71f000 rwxp 00000000 00:00 0
7fde3f71f000-7fde3f7a0000 rw-p 00000000 00:00 0
7fde3f821000-7fde3fdac000 rw-p 00000000 00:00 0
7fde3fdac000-7fde3feac000 rwxp 00000000 00:00 0
7fde3feac000-7fde4034f000 rw-p 00000000 00:00 0
7fde4034f000-7fde404a7000 r-xp 00000000 09:02 27574302 /lib/libc-2.11.2.so
7fde404a7000-7fde406a6000 ---p 00158000 09:02 27574302 /lib/libc-2.11.2.so
7fde406a6000-7fde406aa000 r--p 00157000 09:02 27574302 /lib/libc-2.11.2.so
7fde406aa000-7fde406ab000 rw-p 0015b000 09:02 27574302 /lib/libc-2.11.2.so
7fde406ab000-7fde406b0000 rw-p 00000000 00:00 0
7fde406b0000-7fde406c7000 r-xp 00000000 09:02 27575371 /lib/libpthread-2.11.2.so
7fde406c7000-7fde408c6000 ---p 00017000 09:02 27575371 /lib/libpthread-2.11.2.so
7fde408c6000-7fde408c7000 r--p 00016000 09:02 27575371 /lib/libpthread-2.11.2.so
7fde408c7000-7fde408c8000 rw-p 00017000 09:02 27575371 /lib/libpthread-2.11.2.so
7fde408c8000-7fde408cc000 rw-p 00000000 00:00 0
7fde408cc000-7fde4090e000 r-xp 00000000 09:02 27575404 /lib/libncurses.so.5.7
7fde4090e000-7fde40b0d000 ---p 00042000 09:02 27575404 /lib/libncurses.so.5.7
7fde40b0d000-7fde40b12000 rw-p 00041000 09:02 27575404 /lib/libncurses.so.5.7
7fde40b12000-7fde40b14000 r-xp 00000000 09:02 27574280 /lib/libutiAborted
early with precompiled:
> Fatal error in cpyext, CPython compatibility layer, calling PyTuple_SetItem
> Either report a bug or consider not using this particular extension
> <InvalidPointerException object at 0x1515828>
> RPython traceback:
> File "module_cpyext_pyobject.c", line 515, in make_ref
> File "rpython_lltypesystem_rdict.c", line 425, in ll_dict_getitem__dicttablePtr_objectPtr
> Segmentation fault
script:
# -*- coding: utf8 -*-
"""
ÐÑем аналоги по поÑÑавÑикам
"""
import sys
import os
import time
path = os.path.normpath(os.path.join(os.getcwd(), '..'))
sys.path.append(path)
#from django.core.management import setup_environ
#import dev_settings
#setup_environ(dev_settings)
from django.db.models.query_utils import Q
from idea.vasya.models import Idei74Matrix, ProviderMatrix, ProviderMatrixAnalogs, Providers
#from vasya.update_signature import BITS
BITS = {
u'4': 1152921504606846976,
u'5': 2305843009213693952,
u'1': 144115188075855872,
u'0': 72057594037927936,
u'3': 576460752303423488,
u'б': 268435456,
u'а': 134217728,
u'г': 1073741824,
u'в': 536870912,
u'е': 4294967296,
u'д': 2147483648,
u'з': 17179869184,
u'ж': 8589934592,
u'7': 288230376151711744,
u'и': 34359738368,
u'л': 137438953472,
u'к': 68719476736,
u'н': 549755813888,
u'м': 274877906944,
u'п': 2199023255552,
u'о': 1099511627776,
u'Ñ': 8796093022208,
u'Ñ': 4398046511104,
u'Ñ': 35184372088832,
u'Ñ': 17592186044416,
u'Ñ
': 140737488355328,
u'Ñ': 70368744177664,
u'Ñ': 562949953421312,
u'Ñ': 281474976710656,
u'Ñ': 2251799813685248,
u'Ñ': 1125899906842624,
u'6': 144115188075855872,
u'Ñ': 4503599627370496,
u'Ñ': 36028797018963968,
u'Ñ': 9007199254740992,
u'9': 1152921504606846976,
u'8': 576460752303423488,
u'2': 288230376151711744,
u'a': 2,
u'c': 8,
u'b': 4,
u'e': 32,
u'd': 16,
u'g': 128,
u'f': 64,
u'i': 512,
u'h': 256,
u'k': 2048,
u'j': 1024,
u'm': 8192,
u'l': 4096,
u'o': 32768,
u'n': 16384,
u'q': 131072,
u'p': 65536,
u's': 524288,
u'r': 262144,
u'u': 2097152,
u't': 1048576,
u'w': 8388608,
u'v': 4194304,
u'y': 33554432,
u'x': 16777216,
u'z': 67108864,
}
from Queue import Queue
from threading import Thread
class Worker(Thread):
def __init__(self, tasks):
Thread.__init__(self)
self.tasks = tasks
self.daemon = True
self.start()
def __del__(self):
self.tasks = None
self.daemon = None
def run(self):
while True:
func, args, kwargs = self.tasks.get()
try:
func(*args, **kwargs)
except Exception, e:
print "%s %s %s" % (e, args, kwargs)
self.tasks.task_done()
class ThreadPool:
def __init__(self, num_threads):
self.tasks = Queue(num_threads)
for _ in range(num_threads):
Worker(self.tasks)
def __del__(self):
self.tasks = None
def add_task(self, func, *args, **kargs):
self.tasks.put((func, args, kargs))
def awaiting_completion(self):
self.tasks.join()
def start_check(matrix, provider_items):
# print matrix.id
"""ÐÑовеÑÑем Ð¸Ð¼Ñ Ð¿Ð¾ маÑÑиÑе пÑовайдеÑов"""
# todo: пÑовеÑиÑÑ ÑилÑÑÑаÑиÑ!
src_pma = ProviderMatrixAnalogs.objects.filter(provider__in=provider_items, idei__id=matrix.id,
provider__provider=provider_items[0].provider.pk, bad_variant=True)
src_pma = [pma.provider.id for pma in src_pma]
if src_pma:
provider_items = provider_items.filter(~Q(id__in=src_pma))
matrix_hashes = matrix.hash.split(":::") if matrix.hash else []
matrix_frases = matrix.frase.split(":::") if matrix.frase else []
try:
for item in provider_items:
# print "item: %s" % item.id
find_zero = False
# ÐоиÑк по аналогам
hashes = item.hash.split(":::")
frases = item.frase.split(":::")
for i, hash in enumerate(hashes):
if not find_zero:
for ii, mh in enumerate(matrix_hashes):
if not find_zero and mh and hash:
# ÐÑовеÑÑем по Ñ
ÑÑÑ
r = int(mh) ^ int(hash)
l = 0
for b in BITS:
if r & BITS[b]:
l += 1
if l > 2:
break
if l < 3:
d = distance(matrix_frases[ii], frases[i])
#if src_pma and src_pma.filter(distance=d, algorythm=('alg%s' % i), provider=item.pk):
# continue
if d < 3:
#print u"%s::%s" % (matrix.name, item.name)
pma = ProviderMatrixAnalogs()
pma.idei = matrix
pma.provider = item
pma.distance = d
pma.algorythm = 'alg%s' % i
if not d:
find_zero = True
pma.is_analog = True
# ÐÑли Ð¼Ñ Ð½Ð°Ñли пÑÑмое Ñовпадение по Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð°Ð»Ð³Ð¾ÑиÑмÑ, Ñо ÑбÑаÑÑваем вÑе оÑÑалÑное
#ProviderMatrixAnalogs.objects.filter(idei=matrix.pk, provider__provider=item.provider.pk, is_analog=False).delete()
pass
pma.save(using='master')
except ValueError, e:
print "error on matrix item id: %s" % matrix.id
print "e: %s" % e
print "matrix_hashes: %s" % matrix_hashes
print "matrix_frases: %s" % matrix_frases
print "hashes: %s" % hashes
print "frases: %s" % frases
print "-----"
def distance(a, b):
"Calculates the Levenshtein distance between a and b."
n, m = len(a), len(b)
if n > m:
# Make sure n <= m, to use O(min(n,m)) space
a, b = b, a
n, m = m, n
current_row = range(n + 1) # Keep current and previous row, not entire matrix
for i in range(1, m + 1):
previous_row, current_row = current_row, [i] + [0] * m
for j in range(1, n + 1):
add, delete, change = previous_row[j] + 1, current_row[j - 1] + 1, previous_row[j - 1]
if a[j - 1] != b[i - 1]:
change += 1
current_row[j] = min(add, delete, change)
return current_row[n]
pool = ThreadPool(16)
idea_items = Idei74Matrix.objects.filter(~Q(group=221) & Q(show=True))
providers = Providers.objects.all()
#providers = Providers.objects.filter(id__in=[22, 23, 25])
# cool!! providers_id= map(lambda obj: obj.id, providers)
for p in providers:
print p
# Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ пÑовайдеÑа Ñоздаем Ñвой Ð½Ð°Ð±Ð¾Ñ ÑоваÑов на ÑазбоÑ
# Ñже пÑивÑзаннÑе аналоги
analogs_items = ProviderMatrixAnalogs.objects.filter(Q(provider__provider__id=p.id) & Q(is_analog=True) & Q(provider__show=True))
# Ðналоги коÑоÑÑе пÑизнали плоÑ
им ваÑианÑом
bad_items = ProviderMatrixAnalogs.objects.filter(Q(provider__provider__id=p.id) & Q(bad_variant=True))
# СпиÑок ID ÑоваÑов Ðдеи пÑивÑзаннÑÑ
по алгоÑиÑÐ¼Ñ Ð¸Ð»Ð¸ вÑÑÑнÑÑ
idea_items_new = [obj.idei.id for obj in analogs_items]
# СпиÑок ID ÑоваÑов поÑÑавÑика пÑивÑзаннÑÑ
по алгоÑиÑÐ¼Ñ Ð¸Ð»Ð¸ вÑÑÑнÑÑ
provider_items = [obj.provider.id for obj in analogs_items]
# ÐÑклÑÑаем ÑоваÑÑ, коÑоÑÑе Ñже Ð½Ð°Ð¹Ð´ÐµÐ½Ñ Ð¸ вообÑе ÑазÑеÑÐµÐ½Ñ Ðº поиÑкÑ
idea_items_new = idea_items.filter(~Q(id__in=idea_items_new) & Q(group__providers=p))
# ÐÑклÑÑаем ÑоваÑÑ, коÑоÑÑе Ñже Ð½Ð°Ð¹Ð´ÐµÐ½Ñ Ð¸Ð»Ð¸ пÑовеÑÑлиÑÑ Ð¸Ð»Ð¸ оÑклÑÑÐµÐ½Ñ Ð²ÑÑÑнÑÑ
provider_items = ProviderMatrix.objects.filter(Q(provider__id=p.id) & ~Q(id__in=provider_items) & Q(show=True) & Q(hide=False))
if provider_items:
for item in idea_items_new:
pool.add_task(start_check, item, provider_items)
pool.awaiting_completion()
More information about the pypy-issue
mailing list