Open GoogleCodeExporter opened 8 years ago
juser@dhcp186:~/python-video4linux2$ svn up
At revision 11.
juser@dhcp186:~/python-video4linux2$ uname -a
Linux dhcp186 2.6.27-7-generic #1 SMP Fri Oct 24 06:42:44 UTC 2008 i686
GNU/Linux
juser@dhcp186:~/python-video4linux2$ LD_LIBRARY_PATH=/usr/lib/debug gdb
pythonGNU gdb
6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) run ./recordpics.py -d /dev/video1
Starting program: /usr/bin/python ./recordpics.py -d /dev/video1
[Thread debugging using libthread_db enabled]
[New Thread 0xb7e018c0 (LWP 13572)]
*** glibc detected *** /usr/bin/python: malloc(): memory corruption: 0x09c71318
***
======= Backtrace: =========
/usr/lib/debug/libc.so.6[0xb7e6de25]
/usr/lib/debug/libc.so.6[0xb7e70528]
/usr/lib/debug/libc.so.6(__libc_malloc+0x9c)[0xb7e7204c]
/usr/bin/python(_PyObject_GC_NewVar+0x3b)[0x80f947b]
/usr/bin/python(PyFrame_New+0x2d8)[0x8116ae8]
/usr/bin/python(PyEval_EvalFrameEx+0x6736)[0x80cfba6]
/usr/bin/python(PyEval_EvalFrameEx+0x6785)[0x80cfbf5]
/usr/bin/python(PyEval_EvalCodeEx+0x685)[0x80d0345]
/usr/bin/python(PyEval_EvalCode+0x57)[0x80d0557]
/usr/bin/python(PyRun_FileExFlags+0xef)[0x80edf8f]
/usr/bin/python(PyRun_SimpleFileExFlags+0x19a)[0x80ee25a]
/usr/bin/python(Py_Main+0xc57)[0x80595e7]
/usr/bin/python(main+0x22)[0x8058962]
/usr/lib/debug/libc.so.6(__libc_start_main+0xe5)[0xb7e18685]
/usr/bin/python[0x80588a1]
======= Memory map: ========
08048000-08144000 r-xp 00000000 08:01 345240 /usr/bin/python2.5
08144000-08145000 r--p 000fb000 08:01 345240 /usr/bin/python2.5
08145000-0816a000 rw-p 000fc000 08:01 345240 /usr/bin/python2.5
0816a000-08170000 rw-p 0816a000 00:00 0
09bde000-09c9f000 rw-p 09bde000 00:00 0 [heap]
b7a00000-b7a21000 rw-p b7a00000 00:00 0
b7a21000-b7b00000 ---p b7a21000 00:00 0
b7be3000-b7bf0000 r-xp 00000000 08:01 796255 /lib/libgcc_s.so.1
b7bf0000-b7bf1000 r--p 0000c000 08:01 796255 /lib/libgcc_s.so.1
b7bf1000-b7bf2000 rw-p 0000d000 08:01 796255 /lib/libgcc_s.so.1
b7bfe000-b7c3f000 rw-p b7bfe000 00:00 0
b7c3f000-b7c42000 r-xp 00000000 08:01 352324
/usr/lib/python2.5/lib-dynload/_locale.so
b7c42000-b7c43000 r--p 00002000 08:01 352324
/usr/lib/python2.5/lib-dynload/_locale.so
b7c43000-b7c44000 rw-p 00003000 08:01 352324
/usr/lib/python2.5/lib-dynload/_locale.so
b7c44000-b7c53000 r-xp 00000000 08:01 352316
/usr/lib/python2.5/lib-dynload/datetime.so
b7c53000-b7c54000 r--p 0000e000 08:01 352316
/usr/lib/python2.5/lib-dynload/datetime.so
b7c54000-b7c57000 rw-p 0000f000 08:01 352316
/usr/lib/python2.5/lib-dynload/datetime.so
b7c57000-b7c58000 r-xp 00000000 08:01 452284
/home/juser/python-video4linux2/libpyv4l2.so
b7c58000-b7c59000 r--p 00001000 08:01 452284
/home/juser/python-video4linux2/libpyv4l2.so
b7c59000-b7c5a000 rw-p 00002000 08:01 452284
/home/juser/python-video4linux2/libpyv4l2.so
b7c5a000-b7c5f000 r-xp 00000000 08:01 351977
/usr/lib/python2.5/lib-dynload/operator.so
b7c5f000-b7c60000 r--p 00004000 08:01 351977
/usr/lib/python2.5/lib-dynload/operator.so
b7c60000-b7c61000 rw-p 00005000 08:01 351977
/usr/lib/python2.5/lib-dynload/operator.so
b7c61000-b7c66000 r-xp 00000000 08:01 351980
/usr/lib/python2.5/lib-dynload/strop.so
b7c66000-b7c67000 r--p 00004000 08:01 351980
/usr/lib/python2.5/lib-dynload/strop.so
b7c67000-b7c69000 rw-p 00005000 08:01 351980
/usr/lib/python2.5/lib-dynload/strop.so
b7c69000-b7caa000 rw-p b7c69000 00:00 0
b7caa000-b7cbe000 r-xp 00000000 08:01 345417 /usr/lib/libz.so.1.2.3.3
b7cbe000-b7cc0000 rw-p 00013000 08:01 345417 /usr/lib/libz.so.1.2.3.3
b7cc0000-b7cdf000 r-xp 00000000 08:01 350173 /usr/lib/libjpeg.so.62.0.0
b7cdf000-b7ce0000 rw-p 0001e000 08:01 350173 /usr/lib/libjpeg.so.62.0.0
b7ce2000-b7ce9000 r-xp 00000000 08:01 351851
/usr/lib/python2.5/lib-dynload/array.so
b7ce9000-b7cea000 r--p 00006000 08:01 351851
/usr/lib/python2.5/lib-dynload/array.so
b7cea000-b7cec000 rw-p 00007000 08:01 351851
/usr/lib/python2.5/lib-dynload/array.so
b7cec000-b7d1e000 r-xp 00000000 08:01 451272
/usr/lib/python2.5/site-packages/PIL/_imaging.so
b7d1e000-b7d20000 r--p 00031000 08:01 451272
/usr/lib/python2.5/site-packages/PIL/_imaging.so
b7d20000-b7d22000 rw-p 00033000 08:01 451272
/usr/lib/python2.5/site-packages/PIL/_imaging.so
b7d22000-b7d2a000 rw-p b7d22000 00:00 0
b7d2a000-b7d2f000 r-xp 00000000 08:01 351849
/usr/lib/python2.5/lib-dynload/_struct.so
b7d2f000-b7d30000 r--p 00004000 08:01 351849
/usr/lib/python2.5/lib-dynload/_struct.so
b7d30000-b7d31000 rw-p 00005000 08:01 351849
/usr/lib/python2.5/lib-dynload/_struct.so
b7d31000-b7d45000 r-xp 00000000 08:01 352312
/usr/lib/python2.5/lib-dynload/_ctypes.so
b7d45000-b7d46000 r--p 00014000 08:01 352312
/usr/lib/python2.5/lib-dynload/_ctypes.so
b7d46000-b7d48000 rw-p 00015000 08:01 352312
/usr/lib/python2.5/lib-dynload/_ctypes.so
b7d48000-b7d7e000 r--p 00000000 08:01 367923 /usr/lib/locale/en_US/LC_CTYPE
b7d7e000-b7dbf000 rw-p b7d7e000 00:00 0
b7dc0000-b7e02000 rw-p b7dc0000 00:00 0
b7e02000-b7f3f000 r-xp 00000000 08:01 452081 /usr/lib/debug/libc-2.8.90.so
b7f3f000-b7f41000 r--p 0013d000 08:01 452081 /usr/lib/debug/libc-2.8.90.so
b7f41000-b7f42000 rw-p 0013f000 08:01 452081 /usr/lib/debug/libc-2.8.90.so
b7f42000-b7f45000 rw-p b7f42000 00:00 0
b7f45000-b7f69000 r-xp 00000000 08:01 452085 /usr/lib/debug/libm-2.8.90.so
b7f69000-b7f6a000 r--p 00023000 08:01 452085 /usr/lib/debug/libm-2.8.90.so
b7f6a000-b7f6b000 rw-p 00024000 08:01 452085 /usr/lib/debug/libm-2.8.90.so
b7f6b000-b7f6d000 r-xp 00000000 08:01 452100
/usr/lib/debug/libutil-2.8.90.so
b7f6d000-b7f6e000 r--p 00001000 08:01 452100
/usr/lib/debug/libutil-2.8.90.so
b7f6e000-b7f6f000 rw-p 00002000 08:01 452100
/usr/lib/debug/libutil-2.8.90.so
b7f6f000-b7f70000 rw-p b7f6f000 00:00 0
b7f70000-b7f72000 r-xp 00000000 08:01 452084 /usr/lib/debug/libdl-2.8.90.so
b7f72000-b7f73000 r--p 00001000 08:01 452084 /usr/lib/debug/libdl-2.8.90.so
b7f73000-b7f74000 rw-p 00002000 08:01 452084 /usr/lib/debug/libdl-2.8.90.so
b7f74000-b7f88000 r-xp 00000000 08:01 452095
/usr/lib/debug/libpthread-2.8.90.so
b7f88000-b7f89000 r--p 00013000 08:01 452095
/usr/lib/debug/libpthread-2.8.90.so
b7f89000-b7f8a000 rw-p 00014000 08:01 452095
/usr/lib/debug/libpthread-2.8.90.so
b7f8a000-b7f8e000 rw-p b7f8a000 00:00 0
b7f8e000-b7fa8000 r-xp 00000000 08:01 793086 /lib/ld-2.8.90.so
b7fa8000-b7fa9000 r-xp b7fa8000 00:00 0 [vdso]
b7fa9000-b7faa000 r--p 0001a000 08:01 793086 /lib/ld-2.8.90.so
b7faa000-b7fab000 rw-p 0001b000 08:01 793086 /lib/ld-2.8.90.so
bff8f000-bffaa000 rw-p bffe5000 00:00 0 [stack]
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb7e018c0 (LWP 13572)]
0xb7e2ca16 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) bt full
#0 0xb7e2ca16 in *__GI_raise (sig=6)
at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
resultvar = <value optimized out>
pid = -1208741900
selftid = 13572
#1 0xb7e2e318 in *__GI_abort () at abort.c:88
act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1},
sa_mask = {__val = {13, 3220861160, 3085982700, 3086656096, 3086656096, 0,
3220861300, 134580385, 134531212, 1001, 21206, 134551232, 1001,
134523028, 3085731229, 4, 3220861228, 6, 3085169188, 3086225396, 4, 2,
3220861344, 3085836024, 6, 3220861228, 4, 0, 3086109113, 3086109109,
3086104013, 3086113812}}, sa_flags = -1208853440,
sa_restorer = 0xb7f25c3c}
sigs = {__val = {32, 0 <repeats 31 times>}}
#2 0xb7e67fdd in __libc_message (do_abort=2,
fmt=0xb7f279c0 "*** glibc detected *** %s: %s: 0x%s ***\n")
at ../sysdeps/unix/sysv/linux/libc_fatal.c:170
ap = 0xbffa7810 "\235H��0��09c71318"
fd = 6
on_2 = <value optimized out>
list = <value optimized out>
nlist = 7
cp = <value optimized out>
written = 6
#3 0xb7e6de25 in malloc_printerr (action=2,
str=0xb7f2489d "malloc(): memory corruption", ptr=0x9c71318)
at malloc.c:5949
buf = "09c71318"
cp = 0x6 <Address 0x6 out of bounds>
#4 0xb7e70528 in _int_malloc (av=0xb7f42140, bytes=360) at malloc.c:4207
iters = 0
nb = 368
idx = 46
bin = <value optimized out>
victim = (mchunkptr) 0x9c71310
size = 164156976
victim_index = <value optimized out>
remainder = <value optimized out>
remainder_size = <value optimized out>
block = 4
bit = <value optimized out>
map = <value optimized out>
fwd = (mchunkptr) 0x180
bck = (mchunkptr) 0x0
#5 0xb7e7204c in *__GI___libc_malloc (bytes=360) at malloc.c:3551
ar_ptr = (mstate) 0xb7f42140
victim = (void *) 0x8163fe0
hook = <value optimized out>
#6 0x080f947b in _PyObject_GC_NewVar (tp=0x8163fe0, nitems=8)
---Type <return> to continue, or q <return> to quit---
at ../Modules/gcmodule.c:1324
size = <value optimized out>
#7 0x08116ae8 in PyFrame_New (tstate=0x9bde1b8, code=0xb7d9c4e8,
globals=0xb7d8f9bc, locals=0x0) at ../Objects/frameobject.c:614
extras = 6
back = (PyFrameObject *) 0x9c7aecc
f = (PyFrameObject *) 0x0
builtins = (PyObject *) 0xb7dc3824
i = <value optimized out>
#8 0x080cfba6 in PyEval_EvalFrameEx (f=0x9c7aecc, throwflag=0)
at ../Python/ceval.c:3670
sp = (PyObject **) 0x9c7b038
stack_pointer = (PyObject **) 0x9c7b038
next_instr = (unsigned char *) 0x9c40708 "\001|\003"
opcode = <value optimized out>
oparg = 1
why = <value optimized out>
err = 0
x = (PyObject *) 0x9bedbec
v = (PyObject *) 0xb7c81c6c
w = (PyObject *) 0x9be2070
u = (PyObject *) 0x8163fe0
t = <value optimized out>
stream = (PyObject *) 0xbffa79d8
freevars = (PyObject **) 0x9c7b030
retval = (PyObject *) 0x0
tstate = (PyThreadState *) 0x9bde1b8
co = (PyCodeObject *) 0xb7d88380
instr_ub = -1
instr_lb = 0
instr_prev = -1
first_instr = (unsigned char *) 0x9c405f4 "t"
names = (PyObject *) 0xb7dca17c
consts = (PyObject *) 0xb7de61ac
#9 0x080cfbf5 in PyEval_EvalFrameEx (f=0x9befe54, throwflag=0)
at ../Python/ceval.c:3681
sp = (PyObject **) 0x9beff90
stack_pointer = (PyObject **) 0x9beff90
next_instr = (unsigned char *) 0xb7d9977e "\001n\001"
opcode = <value optimized out>
oparg = 0
why = <value optimized out>
err = 0
x = (PyObject *) 0x0
v = (PyObject *) 0xb7dc3824
w = (PyObject *) 0x5
u = (PyObject *) 0x8163fe0
t = <value optimized out>
stream = (PyObject *) 0x10
---Type <return> to continue, or q <return> to quit---
freevars = (PyObject **) 0x9beff8c
retval = (PyObject *) 0x0
tstate = (PyThreadState *) 0x9bde1b8
co = (PyCodeObject *) 0xb7d88458
instr_ub = -1
instr_lb = 0
instr_prev = -1
first_instr = (unsigned char *) 0xb7d9971c "d"
names = (PyObject *) 0xb7d8962c
consts = (PyObject *) 0xb7dfe8cc
#10 0x080d0345 in PyEval_EvalCodeEx (co=0xb7d88458, globals=0xb7ddaacc,
locals=0xb7ddaacc, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0,
defcount=0, closure=0x0) at ../Python/ceval.c:2858
f = (PyFrameObject *) 0x9befe54
retval = <value optimized out>
freevars = (PyObject **) 0x9beff8c
tstate = (PyThreadState *) 0x9bde1b8
x = <value optimized out>
u = (PyObject *) 0xbffa995c
#11 0x080d0557 in PyEval_EvalCode (co=0xb7d88458, globals=0xb7ddaacc,
locals=0xb7ddaacc) at ../Python/ceval.c:514
No locals.
#12 0x080edf8f in PyRun_FileExFlags (fp=0x9bde008,
filename=0xbffa995c "./recordpics.py", start=257, globals=0xb7ddaacc,
locals=0xb7ddaacc, closeit=1, flags=0xbffa7f08)
at ../Python/pythonrun.c:1273
ret = (PyObject *) 0x0
mod = <value optimized out>
arena = <value optimized out>
#13 0x080ee25a in PyRun_SimpleFileExFlags (fp=0x9bde008,
filename=0xbffa995c "./recordpics.py", closeit=1, flags=0xbffa7f08)
at ../Python/pythonrun.c:879
m = <value optimized out>
d = (PyObject *) 0xb7ddaacc
v = <value optimized out>
ext = 0xbffa9967 "s.py"
#14 0x080595e7 in Py_Main (argc=3, argv=0xbffa7fd4) at ../Modules/main.c:532
c = <value optimized out>
sts = <value optimized out>
command = 0x0
filename = 0x6 <Address 0x6 out of bounds>
module = 0x0
fp = (FILE *) 0x9bde008
p = <value optimized out>
inspect = 0
unbuffered = 0
skipfirstline = 0
stdin_is_interactive = <value optimized out>
help = 0
---Type <return> to continue, or q <return> to quit---
version = 0
saw_inspect_flag = 0
saw_unbuffered_flag = 0
cf = {cf_flags = 0}
#15 0x08058962 in main (argc=Cannot access memory at address 0x3504
) at ../Modules/python.c:23
No locals.
Original comment by cfkars...@gmail.com
on 30 Oct 2008 at 10:39
Looks like this is still happening with a Bt878 card, tested on Ubuntu Intrepid
with
--
02:09.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture
(rev 02)
Flags: bus master, medium devsel, latency 66, IRQ 18
Memory at 44000000 (32-bit, prefetchable) [size=4K]
Kernel driver in use: bttv
Kernel modules: bttv
02:09.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev
02)
Flags: bus master, medium devsel, latency 66, IRQ 11
Memory at 44100000 (32-bit, prefetchable) [size=4K]
--
Mungewell.
Original comment by mungew...@gmail.com
on 4 Feb 2009 at 12:13
Attachments:
'ioctl(fd, VIDIOC_G_FMT, f)' is segfaulting.
it looks like is passes the wrong structure, it passes 'PixFormat()' when it
should
pass 'struct v4l2_format'.
http://v4l2spec.bytesex.org/spec/r10944.htm
Mungewell.
Original comment by mungew...@gmail.com
on 4 Feb 2009 at 12:31
A really nasty hack is to add some spare space at the end of the PixFormat()
structure, which prevents the segfault
---
class PixFormat(Structure):
_fields_ = [
('type', c_long),
('width', c_uint32),
('height', c_uint32),
('pixelformat', c_char * 4),
('field', c_uint32),
('bytesperline', c_uint32),
('sizeimage', c_uint32),
('colorspace', c_uint32),
('priv', c_uint32),
('fps_num', c_uint32),
('fps_den', c_uint32),
('blank_space', c_char * 512),
]
--
Original comment by mungew...@gmail.com
on 4 Feb 2009 at 12:50
Just for reference my Bt878 card now reports:
--
simon@myth2:~/python-video4linux2-fps$ ./pyv4l2.py
Available devices: ['/dev/video0']
/dev/video0
Capabilities:
Capture
VBICapture
ReadWrite
Overlay
Streaming
Tuner
Input 0:
Name: Television
Type: tuner
Standards: ['PAL_B', 'PAL_G', 'PAL_D', 'PAL_K', 'PAL_I', 'PAL_H',
'PAL_N', 'PAL_M', 'PAL', 'NTSC_M_JP', 'SECAM_B', 'PAL_D1', 'SECAM_G', 'SECAM_D',
'SECAM_K', 'SECAM_H', 'NTSC', 'SECAM_L', 'SECAM_K1', 'SECAM_LC', 'NTSC_M_KR',
'PAL_B1', 'PAL_60', 'NTSC_M', 'PAL_Nc']
Input 1:
Name: Composite1
Type: camera
Standards: ['PAL_B', 'PAL_G', 'PAL_D', 'PAL_K', 'PAL_I', 'PAL_H',
'PAL_N', 'PAL_M', 'PAL', 'NTSC_M_JP', 'SECAM_B', 'PAL_D1', 'SECAM_G', 'SECAM_D',
'SECAM_K', 'SECAM_H', 'NTSC', 'SECAM_L', 'SECAM_K1', 'SECAM_LC', 'NTSC_M_KR',
'PAL_B1', 'PAL_60', 'NTSC_M', 'PAL_Nc']
Input 2:
Name: S-Video
Type: camera
Standards: ['PAL_B', 'PAL_G', 'PAL_D', 'PAL_K', 'PAL_I', 'PAL_H',
'PAL_N', 'PAL_M', 'PAL', 'NTSC_M_JP', 'SECAM_B', 'PAL_D1', 'SECAM_G', 'SECAM_D',
'SECAM_K', 'SECAM_H', 'NTSC', 'SECAM_L', 'SECAM_K1', 'SECAM_LC', 'NTSC_M_KR',
'PAL_B1', 'PAL_60', 'NTSC_M', 'PAL_Nc']
Input 3:
Name: Composite3
Type: camera
Standards: ['PAL_B', 'PAL_G', 'PAL_D', 'PAL_K', 'PAL_I', 'PAL_H',
'PAL_N', 'PAL_M', 'PAL', 'NTSC_M_JP', 'SECAM_B', 'PAL_D1', 'SECAM_G', 'SECAM_D',
'SECAM_K', 'SECAM_H', 'NTSC', 'SECAM_L', 'SECAM_K1', 'SECAM_LC', 'NTSC_M_KR',
'PAL_B1', 'PAL_60', 'NTSC_M', 'PAL_Nc']
Pixel formats:
GREY 8 bpp, gray
HI24 8 bpp, dithered color
RGBO 15 bpp RGB, le
RGBQ 15 bpp RGB, be
RGBP 16 bpp RGB, le
RGBR 16 bpp RGB, be
BGR3 24 bpp RGB, le
BGR4 32 bpp RGB, le
RGB4 32 bpp RGB, be
YUYV 4:2:2, packed, YUYV
YUYV 4:2:2, packed, YUYV
UYVY 4:2:2, packed, UYVY
422P 4:2:2, planar, Y-Cb-Cr
YU12 4:2:0, planar, Y-Cb-Cr
YV12 4:2:0, planar, Y-Cr-Cb
411P 4:1:1, planar, Y-Cb-Cr
YUV9 4:1:0, planar, Y-Cb-Cr
YVU9 4:1:0, planar, Y-Cr-Cb
Resolutions:
320x240
320x480
352x240
384x288
480x480
512x480
640x480
720x480
--
Original comment by mungew...@gmail.com
on 4 Feb 2009 at 1:49
Original issue reported on code.google.com by
cfkars...@gmail.com
on 30 Oct 2008 at 10:33