classification
Title: thread.get_ident() should return unsigned value
Type: Stage:
Components: Library (Lib) Versions: Python 2.6, Python 2.5, Python 2.4
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: sargo (1)
Priority: Keywords

Created on 2009-07-21 14:25 by sargo, last changed 2009-07-21 14:25 by sargo.

Messages (1)
msg90761 - (view) Author: Wojciech Lichota (sargo) Date: 2009-07-21 14:25
In glibc library (on linux) pthread_t is defined as:

typedef unsigned long int pthread_t;

But python thread module interprets this value as signed long. 

Reproduce:
>>> import thread
>>> thread.get_ident()
In some cases it returns negative value.
Checked in python 2.4, 2.5, 2.6

Proposal:
In my opinion code that cast value returned by pthread_self() should be
changed (see: Python/thread_pthread.h).

Other possibility is to change only returned value by get_ident
function. In this case it should use PyLong_FromUnsignedLong (see:
Modules/threadmodule.c).

Background:
logging module uses 'thread.get_ident()' to save thread_id in logs. If
the same application uses some C library that also writes in log file
some info with thread_id, in some situations this numbers are diffrent.
This complicate logs analyze.
History
Date User Action Args
2009-07-21 14:25:21sargocreate