[ python-Bugs-1441884 ] A (treaded) Python crash only on dual core machines

SourceForge.net noreply at sourceforge.net
Thu Mar 2 18:17:54 CET 2006


Bugs item #1441884, was opened at 2006-03-02 18:17
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1441884&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Threads
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Robert Kiendl (kxroberto)
Assigned to: Nobody/Anonymous (nobody)
Summary: A (treaded) Python crash only on dual core machines

Initial Comment:
There is a strange freeze/crash only on dual core machines:

I have a python app (Python 2.3.5 /Pythonwin build 203
/ Windows) running with no stability problems on normal
machines (Or a crash is so rare, that absolutely nobody
obverses it, though the overall majority of users uses
single core machines). Threads, network &
pythonwin/win32ui all in use.

Yet, from 3 users, _all_ using a Dual Processor System
(XEON, amd x2 3800+) computer, I have reports, that the
application freezes hard and/or crashes with a kind of
random stack dump (operating system). I cannot
experiment with those machines.

I found no hints other than:

http://groups.google.de/group/comp.lang.python/browse_frm/thread/64ca033e1a7f6c61/719b147e870bd5e6

http://sourceforge.net/tracker/?group_id=5470&atid=105470&func=detail&aid=480325

.. both discussions remaining in uncertainty.

Are there (known) problems with Python/Pythonwin
specifically for dual core's  (py2.3.5 / pywin203) ?

What could I do to find the problem?

Robert


--------------

PS: there is very little C extension-code (SWIG)
involved, yet I looked over that so often, I guess its
save:


//

#include "stdafx.h"
#include "commctrl.h"
#include "ext.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    return TRUE;
}

class CAllowThreads {
public:
    PyThreadState *_save; \
    CAllowThreads() {
            _save = PyEval_SaveThread();
    }
    ~CAllowThreads() {
        PyEval_RestoreThread(_save);
    }
};

PyObject* PyListView_GetSubItemRect(
    HWND hwndLV,
    int iItem,
    int iSubItem,
    int code
//    LPRECT lpRect
)
{
    RECT r;
    {
      CAllowThreads _t;
      ListView_GetSubItemRect(
        hwndLV,
        iItem,
        iSubItem,
        code,
        &r );
    }
    return Py_BuildValue("iiii",
r.left,r.top,r.right,r.bottom);

}

int GetStringAddr(const char* s) {
    return (int)s;
}

int PlaySoundResource(int resid, HMODULE hmod)
{
    CAllowThreads _t;
    return PlaySound(MAKEINTRESOURCE(resid), hmod,
SND_RESOURCE);
}

int PlaySoundFile(const char* fname, int flag)
{
    CAllowThreads _t;
    return PlaySound(fname, NULL, flag);
}

PyObject* py_ToolTipRelayMsg(  PyObject* self,
PyObject* args )
{
    MSG msg;
    HWND hwTT;
   
if(!PyArg_ParseTuple(args,"i(iiiii(ii)):ToolTipRelayMsg",
                         &hwTT,

&msg.hwnd,&msg.message,&msg.wParam,&msg.lParam,&msg.time,
                         &msg.pt, ((int*)&msg.pt)+1) )
        return NULL;

    
    {
      CAllowThreads _t;
      SendMessage(hwTT,TTM_RELAYEVENT,0,(LPARAM)&msg);
    }

    Py_INCREF( Py_None );
    return Py_None;
}

---

"GetStringAddress" is used only once like this (leades
to correct NUL termination I think):

self.sb.SendMessage(commctrl.SB_SETTEXT,iPane,extension.GetStringAddr(text))

--- swig:
static PyObject *_wrap_GetStringAddr(PyObject *self,
PyObject *args) {
    PyObject *resultobj;
    char *arg0 ;
    int result ;

    if(!PyArg_ParseTuple(args,(char
*)"s:GetStringAddr",&arg0)) return NULL;
    result = (int )GetStringAddr((char const *)arg0);
    resultobj = PyInt_FromLong((long)result);
    return resultobj;
} 

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1441884&group_id=5470


More information about the Python-bugs-list mailing list