Segmentation fault on updating a BYTEA field [psycopg2]

George Sakkis george.sakkis at gmail.com
Wed May 21 18:32:53 EDT 2008


I have a simple DB table that stores md5 signature pairs:

   Table "public.duplicate"
  Column  | Type  | Modifiers
----------+-------+-----------
 sig      | bytea | not null
 orig_sig | bytea | not null
Indexes:
    "duplicate_pkey" PRIMARY KEY, btree (sig)
    "ix_duplicate_orig_sig" btree (orig_sig)

I use SqlAlchemy to interact with it and inserting works fine; update
however crashes hard with a segfault. Sure enough, the crash is
reproducible when using the underlying psycopg2 directly:

>>> import psycopg2
>>> connect_string = ...
>>> conn = psycopg2.connect(connect_string)
>>> cur = conn.cursor()
>>> cur.execute('SELECT sig,orig_sig from duplicate limit 1')
>>> d = cur.fetchone()
>>> d
(<read-only buffer for 0x40209100, size 16, offset 0 at 0x403054e0>,
<read-only buffer for 0x402090f0, size 16, offset 0 at 0x40305580>)
>>> map(str,d)
["\x02#qO\xb0\xcc\xfcx\xb9u\xa5\x83)\xc4'@", '\xa1\xf22\xf6y\xd0\xbc
\xea6\xf0Y\xf1"\xc9(\n']
>>> cur.execute('UPDATE duplicate SET orig_sig=%(orig_sig)s WHERE duplicate.sig = %(duplicate_sig)s',
...             dict(orig_sig=d[0], duplicate_sig=d[1]))
Segmentation fault

Am I (and SqlAlchemy) doing something silly or is this a bug in
psycopg2 ?

George



More information about the Python-list mailing list