Hello All,
I am dealing with this weird bug.
I have a function in C and I have written python bindings for it using
ctypes.
I can call this function for couple of times and then suddenly it
gives me seg fault.
But I can call same function from a C code for any number of times.
I cannot get what's going on.
here is my code.
/**********************************************/
/* C Function I am calling */
- int get_hash(char *filename,int rate,int ch,unsigned char* hash,
-
unsigned int* hash_size,short* avg_f,short* avg_d){
-
-
/* some variable declarations here */
-
fp = fopen(filename,"rb");
-
-
data = (signed short *)malloc(sizeof(signed short) * N_BLOCKS);
-
-
whereami = WAVE_HEADER_SIZE;
-
while((!feof(fp)) && (fp_more == 1) && !ferror(fp)){
-
data_size = fread(data,sizeof(signed short),N_BLOCKS,fp);
-
whereami += data_size;
-
fp_more = fp_feed_short(id,data,data_size); // call to some
-
library funtion
-
} //end while
-
-
/* some arithmetic calculations here */
-
-
n = hash_calculate(id,length,hash,&f,&d);
-
-
if (data != NULL)
-
free(data)
-
fclose(fp)
-
return n;
-
-
}
-
/*** END OF C FUNCTION ******/
--------------------------------------------------------------------
Python code
---------------------------------------------------------------------
- from ctypes import *
-
lib = cdll.LoadLibrary("/usr/lib/libclient.so")
-
-
def my_func(filename,rate,ch):
-
hash = (c_ubyte * 424)()
-
hash_size = c_uint()
-
avg_f = c_short(0)
-
avg_d = c_short(0)
-
n = lib.get_hash(filename,rate,ch,hash,byref(hash_size),byref
-
(avg_f),byref(avg_d))
-
hash = None
-
-
def main():
-
for filename in os.listdir(MY_DIR):
-
print filename
-
my_func(filename,100,10)
-
print
-
"----------------------------------------------------"
-
-
if __name__ == "__main__":
-
main()
============== END OF PYTHON CODE ==========================
Thank you in advance,
sanket