Hi Guys, I'm desperate. I'm having a real application, which fails rather often when finishing it. I'm not sure, whether any serious problem could be hidden behind it
The script is a pyqt script, which segfaults most of the time on my ubuntu 10.4 linux 64 bit and I'm having trouble to understand why. Trying to create the smallest possible test case I ended up with following script, which I named dodo.py and which i made executable with chmod +x ./dodo.py #!/usr/bin/env python from PyQt4.QtGui import QDialog,QGridLayout,QLabel,QComboBox,QPushButton,QApplication a = "one" b = "unused" c = "also unused" d= "ans also unused" e = "another var" f = "something" class MyForm(QDialog): def __init__(self,parent=None,config=None,ini_info=None): super(MyForm,self).__init__(parent=parent) grid = QGridLayout() quit_btn = QPushButton("Quit") quit_btn.clicked.connect(self.quit) grid.addWidget(quit_btn,0,0) name = "a_name" vals_box = QComboBox() vals_box.addItem("one") vals_box.addItem("two") grid.addWidget(vals_box,0,1) self.setLayout(grid) def quit(self): self.close() if __name__ == "__main__": app = QApplication([]) myform = MyForm() myform.show() retcode = app.exec_() print "last" In order to perform the test several times I typed on the command line: a="" ; while [ "$a" = "" ] ; do ./dodo.py ; read -t 1 a ; done As soon as the window shows up I click twice (slowly ) on 'one' and then on quit. Sample output can be seen here: gelon...@mypc:/my/directory$ a="" ; while [ "$a" = "" ] ; do ./dodo.py ; read -t 1 a ; done last last Segmentation fault last last Segmentation fault last Segmentation fault last Segmentation fault last last last last last Segmentation fault last last Segmentation fault last Segmentation fault as you see the segfault happens rather often. Does anybody see something suspicious with my code? Can anybody else reproduce this? as soon as I remove more lines the error seems to disappear. What else could I do to debug this issue? thanks for help or other ideas If I run my script with strace ./dodo.py I get following last lines for a run without error > rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7f65d6b3b8f0}, {0x4d9820, > [], SA_RESTORER, 0x7f65d6b3b8f0}, 8) = 0 > munmap(0x7f65c6344000, 622280) = 0 > brk(0x2d71000) = 0x2d71000 > poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, > revents=POLLIN|POLLOUT}]) > read(7, > "\22\0\233\6\2\0\300\5\2\0\300\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4096) = 384 > writev(7, > [{"\232\7\2\0\210\0\300\0056\0\2\0\207\0\300\5<\0\2\0\211\0\300\5\232\7\2\0s\0\300\5"..., > 540}, {NULL, 0}, {"", 0}], 3) = 540 > poll([{fd=7, events=POLLIN}], 1, -1) = 1 ([{fd=7, revents=POLLIN}]) > read(7, > "\34\0\241\6r\0\300\5\234\1\0\0\377\261\220\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4096) = 1472 > read(7, 0x29fa704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}]) > writev(7, [{"O\7\2\0\1\0\300\5<\0\2\0\0\0\300\5+\0\1\0", 20}, {NULL, 0}, {"", > 0}], 3) = 20 > poll([{fd=7, events=POLLIN}], 1, -1) = 1 ([{fd=7, revents=POLLIN}]) > read(7, > "\1\2\333\6\0\0\0\0\5\0\300\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) > = 32 > read(7, 0x29fa704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > close(7) = 0 > write(19, "\1\v\3\200\1\0\0\0\0\0\0\0\t\0\0\0", 16) = 16 > close(19) = 0 > open("/proc/stat", O_RDONLY|O_CLOEXEC) = 7 > read(7, "cpu 59482 54 13580 7506040 4761"..., 8192) = 2439 > close(7) = 0 > writev(15, [{"GIOP\1\2\1\5\0\0\0\0", 12}], 1) = 12 > close(15) = 0 > writev(13, [{"GIOP\1\2\1\5\0\0\0\0", 12}], 1) = 12 > close(13) = 0 > close(12) = 0 > close(11) = 0 > unlink("/tmp/orbit-klausf/linc-1282-0-6094bc6991603") = 0 > close(14) = 0 > write(6, "@", 1) = 1 > close(6) = 0 > close(5) = 0 > rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER|SA_NOCLDSTOP, > 0x7f65d6b3b8f0}, {0x7f65d40a3860, [], SA_RESTORER|SA_NOCLDSTOP, > 0x7f65d6b3b8f0}, 8) = 0 > exit_group(0) and following when an error occurs: > writev(16, > [{"<\10\2\0;\6\340\5F\6\5\0!\6\340\5\10\0\340\5\0\0\0\0U\0\33\0\232\7\2\0"..., > 16380}, {NULL, 0}, {"", 0}], 3) = 16380 > read(16, 0xbc49d4, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > poll([{fd=16, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=16, revents=POLLOUT}]) > writev(16, > [{"\232\10\t\0\3\6\340\5R\6\340\5C\6\340\5=\6\340\5\0\0\0\0\0\0\0\0\2\0\2\0"..., > 4256}, {NULL, 0}, {"", 0}], 3) = 4256 > poll([{fd=16, events=POLLIN}], 1, -1) = 1 ([{fd=16, revents=POLLIN}]) > read(16, > "\16\0\317\26s\0\340\5\0\0>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4096) = 64 > read(16, 0xbc49d4, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}]) > writev(7, > [{"7\0\4\0\25\1\300\5\v\0\300\5\0\0\0\0007\1\4\0\26\1\300\5\v\0\300\5\0\0\0\0"..., > 9940}, {NULL, 0}, {"", 0}], 3) = 9940 > read(7, 0xb44704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > read(7, 0xb44704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > read(7, 0xb44704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > poll([{fd=3, events=POLLIN}, {fd=11, events=POLLIN|POLLPRI}, {fd=13, > events=POLLIN|POLLPRI}, {fd=14, events=POLLIN|POLLPRI}, {fd=15, > events=POLLIN|POLLPRI}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, > {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=7, events=POLLIN}], 10, > 0) = 0 (Timeout) > read(7, 0xb44704, 4096) = -1 EAGAIN (Resource temporarily > unavailable) > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x7fb00bc75000 > write(1, "last\n", 5last > ) = 5 > rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x7fb0124088f0}, {0x4d9820, > [], SA_RESTORER, 0x7fb0124088f0}, 8) = 0 > --- SIGSEGV (Segmentation fault) @ 0 (0) --- > +++ killed by SIGSEGV +++ > Segmentation fault thanks a lot for any ideas or explanations -- http://mail.python.org/mailman/listinfo/python-list