On 11 Gen, 13:44, Giovanni Bajo <[email protected]> wrote:
> On sab, 2009-01-10 at 04:04 -0800, Antonio Valentino wrote:
>
> > On 10 Gen, 03:51, Giovanni Bajo <[email protected]> wrote:
> > > On ven, 2009-01-09 at 12:18 -0800, Antonio Valentino wrote:
>
> > > > On 9 Gen, 20:58, Giovanni Bajo <[email protected]> wrote:
> > > > > On 1/9/2009 4:44 PM, [email protected] wrote:
>
> > > > > > I can reproduce this problem on my mandriva x86_64 setup. I tried a
> > > > > > few random revisions of SVN trunk yesterday, all with the same
> > > > > > problem. The code segfaults at source/common/launch.c:665 for me:
>
> > > > > > 664
> > > > > > 665 Py_DECREF(mods);
> > > > > > 666 free(modbuf);
>
> > > > > The DECREF is surely not wrong, so removing it is just papering over
> > > > > the
> > > > > real problem, as far as I can tell.
>
> > > > > Is mods a valid pointer or is it NULL, when it crashes? If it's NULL,
> > > > > what's the value of the expression "ntohl(ptoc->ulen) - 8"?
>
> > > > (gdb) print mods
> > > > $1 = (PyObject *) 0x23a1460
> > > > (gdb) print ntohl(ptoc->ulen)
> > > > $2 = 19728
>
> > > print *mods ?
>
> > (gdb) print *mods
> > $1 = {ob_refcnt = 0, ob_type = 0x7f8042147ea0}
>
> So, the object pointed by "mods" has refcount 0 *before* calling
> Py_DECREF? At what point does it become zero?
No, it is zero after segfault.
$ gdb ./dist/test/test
(gdb) break launch.c:665
Breakpoint 1 at 0x403aa6: file ../common/launch.c, line 665.
(gdb) run
Starting program: /home/antonio/tmp/pyinstaller-test/dist/test/test
[Thread debugging using libthread_db enabled]
thisfile is /home/antonio/tmp/pyinstaller-test/dist/test/test
_MEIPASS2 (workpath) is NULL
homepath is /home/antonio/tmp/pyinstaller-test/dist/test/
Extracting binaries
[New Thread 0x7fb99283e6e0 (LWP 7876)]
/home/antonio/tmp/pyinstaller-test/dist/test/libpython2.5.so.1.0
Manipulating evironment
PYTHONPATH=/home/antonio/tmp/pyinstaller-test/dist/test
importing modules from CArchive
iu
[Switching to Thread 0x7fb99283e6e0 (LWP 7876)]
Breakpoint 1, importModules () at ../common/launch.c:665
665 Py_DECREF(mods);
(gdb) print *mods
$1 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aaa 665 Py_DECREF(mods);
(gdb) print *mods
$2 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aad 665 Py_DECREF(mods);
(gdb) print *mods
$3 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403aaf 665 Py_DECREF(mods);
(gdb) print *mods
$4 = {ob_refcnt = 1, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403ab3 665 Py_DECREF(mods);
(gdb) print *mods
$5 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
665 Py_DECREF(mods);
(gdb) print *mods
$6 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403add 665 Py_DECREF(mods);
(gdb) print *mods
$7 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000403ae0 665 Py_DECREF(mods);
(gdb) print *mods
$8 = {ob_refcnt = 0, ob_type = 0x7fb9917f9ea0}
(gdb) stepi
0x0000000000000001 in ?? ()
(gdb) print *mods
No symbol "mods" in current context.
(gdb) stepi
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()
(gdb) up
#1 0x0000000000403ae3 in importModules () at ../common/launch.c:665
665 Py_DECREF(mods);
(gdb) disassemble
Dump of assembler code for function importModules:
0x00000000004039c0 <importModules+0>: push %r14
0x00000000004039c2 <importModules+2>: mov $0x4056f8,%edi
0x00000000004039c7 <importModules+7>: push %r13
0x00000000004039c9 <importModules+9>: push %r12
0x00000000004039cb <importModules+11>: push %rbp
0x00000000004039cc <importModules+12>: push %rbx
0x00000000004039cd <importModules+13>: callq 0x402658 <p...@plt>
0x00000000004039d2 <importModules+18>: mov $0x405179,%edi
0x00000000004039d7 <importModules+23>: callq *0x2040a3(%rip) #
0x607a80 <PI_PyImport_ImportModule>
0x00000000004039dd <importModules+29>: mov %rax,%rdi
0x00000000004039e0 <importModules+32>: callq *0x2040da(%rip) #
0x607ac0 <PI_PyModule_GetDict>
0x00000000004039e6 <importModules+38>: mov $0x405181,%esi
0x00000000004039eb <importModules+43>: mov %rax,%rdi
0x00000000004039ee <importModules+46>: callq *0x2040d4(%rip) #
0x607ac8 <PI_PyDict_GetItemString>
0x00000000004039f4 <importModules+52>: mov 0x204255(%rip),
%rbx # 0x607c50 <f_tocbuff>
0x00000000004039fb <importModules+59>: cmp 0x204256(%rip),
%rbx # 0x607c58 <f_tocend>
0x0000000000403a02 <importModules+66>: mov %rax,%r14
0x0000000000403a05 <importModules+69>: jb 0x403a2d <importModules
+109>
0x0000000000403a07 <importModules+71>: jmpq 0x403ac8 <importModules
+264>
0x0000000000403a0c <importModules+76>: nopl 0x0(%rax)
0x0000000000403a10 <importModules+80>: cmp $0x4d,%al
0x0000000000403a12 <importModules+82>: je 0x403a35 <importModules
+117>
0x0000000000403a14 <importModules+84>: mov %rbx,%rdi
0x0000000000403a17 <importModules+87>: nop
0x0000000000403a18 <importModules+88>: callq 0x403510
<incrementTocPtr>
0x0000000000403a1d <importModules+93>: cmp %rax,0x204234
(%rip) # 0x607c58 <f_tocend>
0x0000000000403a24 <importModules+100>: mov %rax,%rbx
0x0000000000403a27 <importModules+103>: jbe 0x403ac8 <importModules
+264>
0x0000000000403a2d <importModules+109>: movzbl 0x11(%rbx),%eax
0x0000000000403a31 <importModules+113>: cmp $0x6d,%al
0x0000000000403a33 <importModules+115>: jne 0x403a10 <importModules
+80>
0x0000000000403a35 <importModules+117>: lea 0x12(%rbx),%rbp
0x0000000000403a39 <importModules+121>: mov %rbx,%rdi
0x0000000000403a3c <importModules+124>: callq 0x403830 <extract>
0x0000000000403a41 <importModules+129>: mov 0xc(%rbx),%esi
0x0000000000403a44 <importModules+132>: lea 0x8(%rax),%rdi
0x0000000000403a48 <importModules+136>: mov %rax,%r13
0x0000000000403a4b <importModules+139>: bswap %esi
0x0000000000403a4d <importModules+141>: sub $0x8,%esi
0x0000000000403a50 <importModules+144>: callq *0x20405a(%rip)
# 0x607ab0 <PI_PyString_FromStringAndSize>
0x0000000000403a56 <importModules+150>: mov %rbp,%rdi
0x0000000000403a59 <importModules+153>: mov %rax,%r12
0x0000000000403a5c <importModules+156>: callq 0x402658 <p...@plt>
0x0000000000403a61 <importModules+161>: mov %r12,%rdx
0x0000000000403a64 <importModules+164>: mov $0x405187,%esi
0x0000000000403a69 <importModules+169>: mov %r14,%rdi
0x0000000000403a6c <importModules+172>: xor %eax,%eax
0x0000000000403a6e <importModules+174>: callq *0x204044(%rip)
# 0x607ab8 <PI_PyObject_CallFunction>
0x0000000000403a74 <importModules+180>: mov %rbp,%rdi
0x0000000000403a77 <importModules+183>: mov %rax,%rsi
0x0000000000403a7a <importModules+186>: callq *0x203fe8(%rip)
# 0x607a68 <PI_PyImport_ExecCodeModule>
0x0000000000403a80 <importModules+192>: test %rax,%rax
0x0000000000403a83 <importModules+195>: je 0x403ae8 <importModules
+296>
0x0000000000403a85 <importModules+197>: callq *0x20404d(%rip)
# 0x607ad8 <PI_PyErr_Occurred>
0x0000000000403a8b <importModules+203>: test %rax,%rax
0x0000000000403a8e <importModules+206>: xchg %ax,%ax
0x0000000000403a90 <importModules+208>: je 0x403aa6 <importModules
+230>
0x0000000000403a92 <importModules+210>: nopw 0x0(%rax,%rax,1)
0x0000000000403a98 <importModules+216>: callq *0x204042(%rip)
# 0x607ae0 <PI_PyErr_Print>
0x0000000000403a9e <importModules+222>: xchg %ax,%ax
0x0000000000403aa0 <importModules+224>: callq *0x20402a(%rip)
# 0x607ad0 <PI_PyErr_Clear>
0x0000000000403aa6 <importModules+230>: mov (%r12),%eax
0x0000000000403aaa <importModules+234>: sub $0x1,%eax
0x0000000000403aad <importModules+237>: test %eax,%eax
0x0000000000403aaf <importModules+239>: mov %eax,(%r12)
0x0000000000403ab3 <importModules+243>: je 0x403ad8 <importModules
+280>
0x0000000000403ab5 <importModules+245>: mov %r13,%rdi
0x0000000000403ab8 <importModules+248>: callq 0x402708 <f...@plt>
0x0000000000403abd <importModules+253>: jmpq 0x403a14 <importModules
+84>
0x0000000000403ac2 <importModules+258>: nopw 0x0(%rax,%rax,1)
0x0000000000403ac8 <importModules+264>: pop %rbx
0x0000000000403ac9 <importModules+265>: pop %rbp
0x0000000000403aca <importModules+266>: pop %r12
0x0000000000403acc <importModules+268>: pop %r13
0x0000000000403ace <importModules+270>: xor %eax,%eax
0x0000000000403ad0 <importModules+272>: pop %r14
0x0000000000403ad2 <importModules+274>: retq
0x0000000000403ad3 <importModules+275>: nopl 0x0(%rax,%rax,1)
0x0000000000403ad8 <importModules+280>: mov 0x8(%r12),%rax
0x0000000000403add <importModules+285>: mov %r12,%rdi
0x0000000000403ae0 <importModules+288>: callq *0x28(%rax)
0x0000000000403ae3 <importModules+291>: jmp 0x403ab5 <importModules
+245>
0x0000000000403ae5 <importModules+293>: nopl (%rax)
0x0000000000403ae8 <importModules+296>: mov %rbp,%rdx
0x0000000000403aeb <importModules+299>: mov $0x405189,%esi
0x0000000000403af0 <importModules+304>: mov $0x1,%edi
0x0000000000403af5 <importModules+309>: callq 0x402688
<__printf_...@plt>
0x0000000000403afa <importModules+314>: jmp 0x403a85 <importModules
+197>
End of assembler dump.
(gdb) info registers
rax 0x7fb9917f9ea0 140434986737312
rbx 0xc6f2b0 13038256
rcx 0x7fb9927f7000 140435003502592
rdx 0x7fb9927bc010 140435003260944
rsi 0xc6fc60 13040736
rdi 0xcdd460 13489248
rbp 0xc6f2c2 0xc6f2c2
rsp 0x7fff9a86e160 0x7fff9a86e160
r8 0x7f 127
r9 0x2 2
r10 0x2 2
r11 0x7fb99151f480 140434983744640
r12 0xcdd460 13489248
r13 0xc8d260 13161056
r14 0x7fb99280c998 140435003591064
r15 0x0 0
rip 0x403ae3 0x403ae3 <importModules+291>
eflags 0x10246 [ PF ZF IF RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
fctrl 0x37f 895
fstat 0x0 0
ftag 0xffff 65535
fiseg 0x0 0
fioff 0x0 0
foseg 0x0 0
fooff 0x0 0
fop 0x0 0
mxcsr 0x1f80 [ IM DM ZM OM UM PM ]
####### END #######
It seems to me that the last instruction executed correctly is:
"0x0000000000403ae0 <importModules+288>: callq *0x28(%rax)"
> --
> Giovanni Bajo
> Develer S.r.l.http://www.develer.com
--
Antonio Valentino
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"PyInstaller" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/PyInstaller?hl=en
-~----------~----~----~----~------~----~------~--~---