error : QProcessPrivate::createPipe: Cannot create pipe 0x2ed031ac: Too many open files
-
In your slot you have an infinite loop that is creating indefinitely QProcess objects that execute the
sysConfig.sh
script but you never check whether something went wrong with it.What does that script do ? How do you know it executed successfully ? Does it close everything it has opened ?
-
Also from the PHP files ?
-
yes i have check also in php files that are called in my code everything is ok but still get the same issue after some time get the above error again n agian and finger print module stop working...
my doubt :: if something was missing about closing file then error must appeared early, above error i get after 4-5 hours application run.
-
How are you accessing that reader ?
What does your PHP scripts do ?
-
i am using CAMA SM20 finger print module communicating via UART communication.
in my application there are 2 diffrent threads for php and fingerprint module.
fingerprint module thread does some stuff like collecting data and storing in file.
and php thread include some php script to read text file and uploading to server using webserice. (the text file php read is actually created and update by fingerprint module on run time) -
Can you share the code you use for the serial port communication ?
One thing you can do is use
lsof
to see what files are being constantly opened and by what. -
[root@Atishay build-QT_FP_RFID-QT_4_8_6-Debug]# lsof 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1512 /sbin/udevd /dev/null 1512 /sbin/udevd /dev/null 1512 /sbin/udevd /dev/null 1512 /sbin/udevd anon_inode:inotify 1512 /sbin/udevd socket:[1031] 1512 /sbin/udevd socket:[1032] 1512 /sbin/udevd pipe:[1033] 1512 /sbin/udevd pipe:[1033] 3246 /usr/sbin/inetd /dev/null 3246 /usr/sbin/inetd /dev/null 3246 /usr/sbin/inetd /dev/null 3246 /usr/sbin/inetd socket:[306] 3246 /usr/sbin/inetd socket:[307] 3246 /usr/sbin/inetd socket:[308] 3246 /usr/sbin/inetd socket:[309] 3246 /usr/sbin/inetd socket:[310] 3246 /usr/sbin/inetd socket:[311] 3246 /usr/sbin/inetd socket:[312] 3249 /usr/sbin/boa /dev/null 3249 /usr/sbin/boa /var/log/boa/access_log 3249 /usr/sbin/boa /var/log/boa/error_log 3249 /usr/sbin/boa socket:[1246] 3344 /bin/bash /dev/console 3344 /bin/bash /dev/console 3344 /bin/bash /dev/console 3344 /bin/bash /etc/rc.d/rc_mxc.S 3348 /bin/bash /dev/ttymxc0 3348 /bin/bash /dev/ttymxc0 3348 /bin/bash /dev/ttymxc0 3348 /bin/bash /dev/ttymxc0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9936] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9936] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9938] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9938] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID socket:[9939] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/fb0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/tty0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/input/mouse0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/input/event1 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/tty0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID socket:[9941] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_20_50.qsf 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_40_50.qsf 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[13498] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[13498] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[15454] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[15454] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[14820] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[14820] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/spidev0.0 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[13499] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[13499] 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 8343 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2
above is the log for lsof command when my application running...
-
**before application running output=>** [root@Atishay root]# lsof 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1498 /sbin/udevd /dev/null 1498 /sbin/udevd /dev/null 1498 /sbin/udevd /dev/null 1498 /sbin/udevd anon_inode:inotify 1498 /sbin/udevd socket:[1525] 1498 /sbin/udevd socket:[1526] 1498 /sbin/udevd pipe:[1527] 1498 /sbin/udevd pipe:[1527] 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd socket:[2860] 2653 /usr/sbin/inetd socket:[2861] 2653 /usr/sbin/inetd socket:[2862] 2653 /usr/sbin/inetd socket:[2863] 2653 /usr/sbin/inetd socket:[2864] 2653 /usr/sbin/inetd socket:[2865] 2653 /usr/sbin/inetd socket:[2866] 2656 /usr/sbin/boa /dev/null 2656 /usr/sbin/boa /var/log/boa/access_log 2656 /usr/sbin/boa /var/log/boa/error_log 2656 /usr/sbin/boa socket:[3527] 2750 /bin/bash /dev/console 2750 /bin/bash /dev/console 2750 /bin/bash /dev/console 2750 /bin/bash /etc/rc.d/rc_mxc.S 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 **after application running output=>** 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1 /bin/busybox /dev/console 1498 /sbin/udevd /dev/null 1498 /sbin/udevd /dev/null 1498 /sbin/udevd /dev/null 1498 /sbin/udevd anon_inode:inotify 1498 /sbin/udevd socket:[1525] 1498 /sbin/udevd socket:[1526] 1498 /sbin/udevd pipe:[1527] 1498 /sbin/udevd pipe:[1527] 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd /dev/null 2653 /usr/sbin/inetd socket:[2860] 2653 /usr/sbin/inetd socket:[2861] 2653 /usr/sbin/inetd socket:[2862] 2653 /usr/sbin/inetd socket:[2863] 2653 /usr/sbin/inetd socket:[2864] 2653 /usr/sbin/inetd socket:[2865] 2653 /usr/sbin/inetd socket:[2866] 2656 /usr/sbin/boa /dev/null 2656 /usr/sbin/boa /var/log/boa/access_log 2656 /usr/sbin/boa /var/log/boa/error_log 2656 /usr/sbin/boa socket:[3527] 2750 /bin/bash /dev/console 2750 /bin/bash /dev/console 2750 /bin/bash /dev/console 2750 /bin/bash /etc/rc.d/rc_mxc.S 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 2753 /bin/bash /dev/ttymxc0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9913] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9913] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9915] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[9915] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID socket:[9916] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/fb0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/tty0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/input/mouse0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/input/event1 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/tty0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID socket:[9918] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_20_50.qsf 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_40_50.qsf 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[12299] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[12299] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[11299] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[11299] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[10579] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[10579] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/spidev0.0 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[12300] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID pipe:[12300] 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_14_50.qsf 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /tmp/qtembedded-0/fonts/dejavu_sans_15_75.qsf 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2 5604 /usr/test/build-QT_FP_RFID-QT_4_8_6-Debug/QT_FP_RFID /dev/ttymxc2
-
Is it me or does your application open
/dev/ttymxc2
very often ?How do you open that device file ?
-
Is it me or does your application open
/dev/ttymxc2
very often ?How do you open that device file ?
No, in my application i called following function multiple time. fpSetup();// /dev/ttymxc2 open oftenly /******************************************** fpSetup Starts*************************************************** //Description : Setting Up UART peripheral //Input Parameter : void //Return Type : void ************************************************************************************************************/ void fpSetup(void) { //printf("\nSetting Up Fingerprint module...\n"); N=12; SERIAL_ATTR_ST serial_attr; int ret; int channel; channel=2; // UART channel select as per need.. anas fp=UART4_Port_RDWR(channel); // open UART port. ret=UART4_Attr_set(fp,serial_attr); if (RET_SUCCESS == ret) { //printf("\nBaud Rate Set Successful.\n"); } } /************************************************************************************************************ File: serial_test.h (contains all function declaration and definations for interfacing and enabling serial interface ) Author : RnD Team @ Atishay Infotech Date : 18th Jan 2016,Monday,10:57AM Platform : IMX6 board(Cortex A9) + Linux-3.0.35 Toolchain: arm-fsl-linux-gnueabi-gcc-4.6.2 *************************************************************************************************************/ #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <termios.h> #include <errno.h> #include <sys/ioctl.h> #include <pthread.h> #define BUF_SIZE 512 /* *************************** variables ******************************/ char read_buf[BUF_SIZE]; unsigned char N; //char confirmation_data[BUFFER]; /* *************************** Structures ******************************/ typedef struct { char parity; unsigned int baud; unsigned int databits; unsigned int stopbits; } SERIAL_ATTR_ST; /************ Functions **********************/ static int attr_baud_set(int,unsigned int); static void *datas_read(void*); //char rs232_read(); int rs232_transfer(int fd, unsigned char data[], int buf_size); //static int RS232_test(int); void thread_DataRead(int); int UART4_Attr_set(int fd,SERIAL_ATTR_ST serial_attr); int UART4_Port_RDWR(int); //static int RS485_test(int) typedef struct { unsigned int lable; unsigned int baudrate; } SERIAL_BAUD_ST; typedef struct{ unsigned int flags; unsigned int delay_rts_after_send; /* delay after send (milliseconds) */ }SERIAL_RS485_CONF_ST; #define DEBUG 1 #ifdef DEBUG #define DEBUG_INFO(fmt, args...) fprintf(stderr, fmt, ##args) #define DEBUG_ERROR(fmt, args...) fprintf(stderr, fmt"%s\t%s\t%d\n", ##args, __FILE__,__FUNCTION__,__LINE__) #else #define DEBUG_INFO(fmt, args...) #define DEBUG_ERROR(fmt, args...) #endif #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) #define TIMEOUT 1 /* read operation timeout 1s = TIMEOUT/10 */ #define MIN_LEN 128 /* the min len datas */ #define DEV_NAME_LEN 32 #define SERIAL_ATTR_BAUD 9600*N #define SERIAL_ATTR_DATABITS 8 #define SERIAL_ATTR_STOPBITS 1 #define SERIAL_ATTR_PARITY 'n' #define SERIAL_MODE_NORMAL 0 #define SERIAL_MODE_485 1 #define DELAY_RTS_AFTER_SEND 1 /* 1ms */ #define SER_RS485_ENABLED 1 /* 485 enable */ #define RET_SUCCESS 0 #define RET_FAILED -1 static SERIAL_BAUD_ST g_attr_baud[] = { {230400, B230400}, {115200, B115200}, {57600, B57600}, {38400, B38400}, {19200, B19200}, {9600, B9600}, {4800, B4800}, {2400, B2400}, {1800, B1800}, {1200, B1200}, }; static char g_dev_serial[][DEV_NAME_LEN] = { "/dev/ttymxc0", "/dev/ttymxc1", "/dev/ttymxc2", "/dev/ttymxc3", "/dev/ttymxc4", }; static int attr_baud_set(int fd, unsigned int baud) { unsigned int i=0; int ret = RET_SUCCESS; struct termios option; /* get old serial attribute */ memset(&option, 0, sizeof(option)); if (RET_SUCCESS != tcgetattr(fd, &option)) { DEBUG_ERROR("tcgetattr failed.\n"); return RET_FAILED; } for (i=0;i<ARRAY_SIZE(g_attr_baud);i++) { if (baud == g_attr_baud[i].lable) { ret = tcflush(fd, TCIOFLUSH); if (RET_SUCCESS != ret) { // DEBUG_ERROR("tcflush failed.\n"); break; } ret = cfsetispeed(&option, g_attr_baud[i].baudrate); if (RET_SUCCESS != ret) { // DEBUG_ERROR("cfsetispeed failed.\n"); ret = RET_FAILED; break; } ret = cfsetospeed(&option, g_attr_baud[i].baudrate); if (RET_SUCCESS != ret) { //DEBUG_ERROR("cfsetospeed failed.\n"); ret = RET_FAILED; break; } ret = tcsetattr(fd, TCSANOW, &option); if (RET_SUCCESS != ret) { // DEBUG_ERROR("tcsetattr failed.\n"); ret = RET_FAILED; break; } ret = tcflush(fd, TCIOFLUSH); if (RET_SUCCESS != ret) { // DEBUG_ERROR("tcflush failed.\n"); break; } } } return ret; } static int attr_other_set(int fd, SERIAL_ATTR_ST *serial_attr) { struct termios option; /* get old serial attribute */ memset(&option, 0, sizeof(option)); if (RET_SUCCESS != tcgetattr(fd, &option)) { DEBUG_ERROR("tcgetattr failed.\n"); return RET_FAILED; } option.c_iflag = CLOCAL | CREAD; /* set datas size */ option.c_cflag &= ~CSIZE; option.c_iflag = 0; switch (serial_attr->databits) { case 7: option.c_cflag |= CS7; break; case 8: option.c_cflag |= CS8; break; default: DEBUG_ERROR("invalid argument, unsupport datas size.\n"); return RET_FAILED; } /* set parity */ switch (serial_attr->parity) { case 'n': case 'N': option.c_cflag &= ~PARENB; option.c_iflag &= ~INPCK; break; case 'o': case 'O': option.c_cflag |= (PARODD | PARENB); option.c_iflag |= INPCK; break; case 'e': case 'E': option.c_cflag |= PARENB; option.c_cflag &= ~PARODD; option.c_iflag |= INPCK; break; case 's': case 'S': option.c_cflag &= ~PARENB; option.c_cflag &= ~CSTOPB; break; default: DEBUG_ERROR("invalid argument, unsupport parity type.\n"); return RET_FAILED; } /* set stop bits */ switch (serial_attr->stopbits) { case 1: option.c_cflag &= ~CSTOPB; break; case 2: option.c_cflag |= CSTOPB; break; default: DEBUG_ERROR("invalid argument, unsupport stop bits.\n"); return RET_FAILED; } option.c_oflag = 0; option.c_lflag = 0; option.c_cc[VTIME] = TIMEOUT; option.c_cc[VMIN] = MIN_LEN; if (RET_SUCCESS != tcflush(fd,TCIFLUSH)) { DEBUG_ERROR("tcflush failed.\n"); return RET_FAILED; } if (RET_SUCCESS != tcsetattr(fd, TCSANOW, &option)) { DEBUG_ERROR("tcsetattr failed.\n"); return RET_FAILED; } #if 0 tcgetattr(fd, &option); DEBUG_INFO("c_iflag: %x\rc_oflag: %x\n", option.c_iflag, option.c_oflag); DEBUG_INFO("c_cflag: %x\nc_lflag: %x\n", option.c_cflag, option.c_lflag); DEBUG_INFO("c_line: %x\nc_cc[VTIME]: %d\nc_cc[VMIN]: %d\n", option.c_line, option.c_cc[VTIME], option.c_cc[VMIN]); #endif return RET_SUCCESS; } static int attr_set(int fd, SERIAL_ATTR_ST *serial_attr) { int ret = RET_SUCCESS; if (NULL == serial_attr) { DEBUG_ERROR("invalid argument.\n"); return RET_FAILED; } if (RET_SUCCESS == ret) { ret = attr_baud_set(fd, serial_attr->baud); if (RET_SUCCESS == ret) { ret = attr_other_set(fd, serial_attr); } } return ret; } static void *datas_read(void *arg) { int ret=0,i=0,n_data=0; int fd = *(int *)arg; printf("Reading the data...\n"); memset(read_buf, 0, sizeof(read_buf)); for(i=0;i<9;i++) { ret= read(fd, (read_buf+i), sizeof(char)); if(ret){ n_data++; } } DEBUG_INFO("receive %d datas: %s\n", n_data, read_buf); } void thread_DataRead(int fd) { int ret = RET_SUCCESS; pthread_t pid; printf("Creating the Thread for Reading the Data.\n"); ret = pthread_create(&pid, NULL, datas_read, (void *)&fd); if (RET_SUCCESS != ret) { DEBUG_ERROR("can't create thread:%s\n",(char*) strerror); } else printf("Thread created for reading the data.\n"); pthread_cancel(pid); } int rs232_transfer(int fd,unsigned char data[],int buf_size) { unsigned char i; int n_data=0; int ret = RET_SUCCESS; //printf("Writing the data to R305...\n"); for(i=0;i<(buf_size+1);i++) { ret = write(fd, (data+i) , sizeof(char)); //printf("Data Sent:%x\n",data[i]); n_data++; } if ((buf_size+1) != n_data) { printf("Data Write Failed\n"); ret = RET_FAILED; } else //printf("Done.\n"); sleep(1); return ret; } int UART4_Attr_set(int fd,SERIAL_ATTR_ST serial_attr) { int ret; //SERIAL_ATTR_ST serial_attr; //printf("Setting Up the Attributes.\n"); memset(&serial_attr, 0, sizeof(serial_attr)); serial_attr.baud = SERIAL_ATTR_BAUD; serial_attr.databits = SERIAL_ATTR_DATABITS; serial_attr.stopbits = SERIAL_ATTR_STOPBITS; serial_attr.parity = SERIAL_ATTR_PARITY; ret = attr_set(fd, &serial_attr); return ret; } int UART4_Port_RDWR(int channel) { int fd; //int bufsize; //char write_buf[BUF_SIZE]; //DEBUG_INFO("QY-IMX6S-V1.2 RS232 Com channe ss%d \n Start Testing ...\n", channel); fd = open(g_dev_serial[channel], O_RDWR); if (fd < 0) { DEBUG_ERROR("open serial device %s error!\n", g_dev_serial[channel]); return RET_FAILED; } /*memset(write_buf,0,sizeof(write_buf)); snprintf(write_buf, sizeof(write_buf), "Com%d RS232 test string!\n", channel); bufsize = strlen(write_buf) + 1; serial_rs232_test(fd, write_buf, bufsize);*/ return fd; }
-
Why not use QSerialPort ?
In any case, I don't see any call to close the file descriptor after use.
-
Why not use QSerialPort ?
In any case, I don't see any call to close the file descriptor after use.
-
You'll have to build the module yourself (there's a Qt 4 dedicated branch) but otherwise. The documentation is the same.
-
You'll have to build the module yourself (there's a Qt 4 dedicated branch) but otherwise. The documentation is the same.
@SGaist :: as far now problem is get fixed and my application running fine. as you help me to point out i am not closing file descriptor, i fix this by simply closing file descriptor and keeping track that no device peripheral left open more than once, at the moment i am using with regular serial port communication, thanx for all your suggestion it really help me alot.
once i finish this application surely i will try to work with QSerialPort :) Thank you once again and have great day ☺ -
hello @SGaist ...following issue is occured while running the application and by this the finger print module get off
Unable to handle kernel NULL pointer dereference at virtual address 000000d4 pgd = 80004000 [000000d4] *pgd=00000000 Internal error: Oops: 17 [#1] PREEMPT SMP Modules linked in: CPU: 2 Not tainted (3.0.35-2666-gbdde708 #26) PC is at bus_freq_update+0x80/0x1d0 LR is at bus_freq_update+0x14/0x1d0 pc : [<8007129c>] lr : [<80071230>] psr: 60000013 sp : bfd43e80 ip : 00000001 fp : 0011edd8 r10: 00000000 r9 : 0011edd8 r8 : 80af7a54 r7 : 000e7ef0 r6 : 000000bc r5 : 00000000 r4 : 80aaf958 r3 : ba1e0ae0 r2 : bfd43e78 r1 : 00000000 r0 : 80aabbfc Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c53c7d Table: 4faf404a DAC: 00000015 Process kworker/2:1 (pid: 1386, stack limit = 0xbfd422f0) Stack: (0xbfd43e80 to 0xbfd44000) 3e80: 80af778c 3b5dc100 001312d0 8008657c 001312d0 001312d0 80af7788 80af77783ea0: 80af7a54 bf9ff240 80af7a54 00000004 00000004 80aa7ac4 179a7b00 bfd43ee4 3ec0: 80537fdc 800868bc bfd43f04 800b4dc4 8c018f40 00000000 bfd43f8c 80533958 3ee0: 00000000 00000003 000f32a0 00060ae0 ffffff01 00000000 00000000 00000000 3f00: 00000000 00000002 8005af40 80aa7abc 80aa7abc 00000000 80aa7b00 80aa7cc0 3f20: 8005ad90 8c008d90 8005ad90 8039e698 00060ae0 803a2eac 00000001 bfa03e00 3f40: 8c0182e0 8c01e800 bfd42000 00000000 8c01e805 803a2d90 80b18474 800aab34 3f60: bfa03e10 00000001 bfa03e10 bfa03e00 8c0182e0 8c0182e8 bfa03e10 bfd42000 3f80: 8005b400 8005b400 00000009 800ab36c 00000013 00000000 8005b400 8005b400 3fa0: bfd43fc4 bffb1f00 bfa03e00 800ab1fc 00000013 00000000 00000000 00000000 3fc0: 00000000 800af80c 80062aa4 00000000 bfa03e00 00000000 00000000 00000000 3fe0: bfd43fe0 bfd43fe0 bffb1f00 800af78c 80062aa4 80062aa4 00000000 00000000 [<8007129c>] (bus_freq_update+0x80/0x1d0) from [<8008657c>] (set_cpu_freq+0x1b8/0x3a0) [<8008657c>] (set_cpu_freq+0x1b8/0x3a0) from [<800868bc>] (mxc_set_target+0x10c/0x2bc) [<800868bc>] (mxc_set_target+0x10c/0x2bc) from [<8039e698>] (__cpufreq_driver_target+0x50/0x64) [<8039e698>] (__cpufreq_driver_target+0x50/0x64) from [<803a2eac>] (cpufreq_interactive_freq_down+0x11c/0x14c) [<803a2eac>] (cpufreq_interactive_freq_down+0x11c/0x14c) from [<800aab34>] (process_one_work+0x10c/0x38c) [<800aab34>] (process_one_work+0x10c/0x38c) from [<800ab36c>] (worker_thread+0x170/0x37c) [<800ab36c>] (worker_thread+0x170/0x37c) from [<800af80c>] (kthread+0x80/0x88) [<800af80c>] (kthread+0x80/0x88) from [<80062aa4>] (kernel_thread_exit+0x0/0x8) Code: 0a00000d ebfffea0 ea00000b e5df6148 (e5963018) ---[ end trace 8c5e7d506d5614d2 ]--- Unable to handle kernel paging request at virtual address fffffffc pgd = 80004000 [fffffffc] *pgd=4fffe821, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 [#2] PREEMPT SMP Modules linked in: CPU: 2 Tainted: G D (3.0.35-2666-gbdde708 #26) PC is at kthread_data+0x4/0xc LR is at wq_worker_sleeping+0xc/0xec pc : [<800af9cc>] lr : [<800abeec>] psr: 00000193 sp : bfd43b98 ip : 8c018f90 fp : bfd43c4c r10: ba1e0bfc r9 : ba1e0bfc r8 : ba1e0c78 r7 : 00000002 r6 : bfd42000 r5 : ba1e0ae0 r4 : 00000002 r3 : 00000000 r2 : 00000000 r1 : 00000002 r0 : ba1e0ae0 Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user Control: 10c53c7d Table: 4faf404a DAC: 00000015 Process kworker/2:1 (pid: 1386, stack limit = 0xbfd422f0) Stack: (0xbfd43b98 to 0xbfd44000) 3b80: 8c018f40 80533a6c 3ba0: 809d8c68 80126fe4 bfd43bcf 00000001 bfa03ed0 bffc31e0 0000056a 8015754c 3bc0: 00000000 00000000 8005af40 8005af40 8005a1b4 8005af40 c01dfaab 00000000 3be0: c01dfaab 800980f8 ba230000 ba1e0ae0 bfc08000 ba230504 80af8298 ba230000 3c00: 00000000 8005a260 ba1e0ae0 8009810c ba1e0ae0 8005a260 8007129e 800da9d4 3c20: 00000000 00000000 bfd43c28 ba1e0ae0 ffffffff ba1e0ad8 bff8c000 ba1e0bfc 3c40: ba1e0bfc ba1e0bfc 809d1bc8 80099390 00000000 bfd43c64 bfd42000 00000001 3c60: 80abd4bc bfd43c64 bfd43c64 ba1e0c44 8007129e bfd42000 00000000 00000001 3c80: 8007129e 00000000 800712a0 bfd43cda 809d1bc8 80065740 bfd422f0 0000000b 3ca0: 00000008 00000000 30000001 30303061 20643030 66666265 30616566 30616520 3cc0: 30303030 35652062 31366664 28203834 36393565 38313033 00002029 00000000 3ce0: 0011edd8 00000000 000000d4 00000017 bfd43e38 ba1e0ae0 00000017 00000000 3d00: 0011edd8 8052f84c bfd43e38 8006c488 00000000 00000001 00000200 bfd43de4 3d20: 00591ec2 00000001 00000000 00000000 80a94080 80aa7aa0 bfd43dc4 80090764 3d40: 8c01825c bfd43de4 00000001 00000000 00000002 bfd42000 bfd43de4 8005af40 3d60: 00000000 8005af40 00000000 8008fe20 00000000 00000017 80aab428 000000d4 3d80: bfd43e38 80af7a54 20000113 00000000 0011edd8 8005c384 bffd1780 ffffffff 3da0: 8005af40 00000000 00000000 bffc1900 00000000 8005af40 00000000 00000000 3dc0: 001cbcc5 00000000 bffc1900 00000000 00000fff 00000000 00000000 00000000 3de0: 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 3e00: 00000000 00000000 00000000 bfe4fe00 00000000 bfe4fe00 00000040 800b4ef0 3e20: 00000000 0000040f 00000007 000000bc 000e7ef0 80061990 80aabbfc 00000000 3e40: bfd43e78 ba1e0ae0 80aaf958 00000000 000000bc 000e7ef0 80af7a54 0011edd8 3e60: 00000000 0011edd8 00000001 bfd43e80 80071230 8007129c 60000013 ffffffff 3e80: 80af778c 3b5dc100 001312d0 8008657c 001312d0 001312d0 80af7788 80af7778 3ea0: 80af7a54 bf9ff240 80af7a54 00000004 00000004 80aa7ac4 179a7b00 bfd43ee4 3ec0: 80537fdc 800868bc bfd43f04 800b4dc4 8c018f40 00000000 bfd43f8c 80533958 3ee0: 00000000 00000003 000f32a0 00060ae0 ffffff01 00000000 00000000 00000000 3f00: 00000000 00000002 8005af40 80aa7abc 80aa7abc 00000000 80aa7b00 80aa7cc0 3f20: 8005ad90 8c008d90 8005ad90 8039e698 00060ae0 803a2eac 00000001 bfa03e00 3f40: 8c0182e0 8c01e800 bfd42000 00000000 8c01e805 803a2d90 80b18474 800aab34 3f60: bfa03e10 00000001 bfa03e10 bfa03e00 8c0182e0 8c0182e8 bfa03e10 bfd42000 3f80: 8005b400 8005b400 00000009 800ab36c 00000013 00000000 8005b400 8005b400 3fa0: bfd43fc4 bffb1f00 bfa03e00 800ab1fc 00000013 00000000 00000000 00000000 3fc0: 00000000 800af80c 80062aa4 00000000 bfa03e00 00000001 00000000 00000000 3fe0: bfd43fe0 bfd43fe0 bffb1f00 800af78c 80062aa4 80062aa4 00000000 00000000 [<800af9cc>] (kthread_data+0x4/0xc) from [<800abeec>] (wq_worker_sleeping+0xc/0xec) [<800abeec>] (wq_worker_sleeping+0xc/0xec) from [<80533a6c>] (__schedule+0x390/0x6c0) [<80533a6c>] (__schedule+0x390/0x6c0) from [<80099390>] (do_exit+0x450/0x6e8) [<80099390>] (do_exit+0x450/0x6e8) from [<80065740>] (die+0x228/0x284) [<80065740>] (die+0x228/0x284) from [<8052f84c>] (__do_kernel_fault.part.4+0x54/0x74) [<8052f84c>] (__do_kernel_fault.part.4+0x54/0x74) from [<8006c488>] (do_page_fault+0x2b4/0x31c) [<8006c488>] (do_page_fault+0x2b4/0x31c) from [<8005c384>] (do_DataAbort+0x34/0x9c) [<8005c384>] (do_DataAbort+0x34/0x9c) from [<80061990>] (__dabt_svc+0x70/0xa0) Exception stack(0xbfd43e38 to 0xbfd43e80) 3e20: 80aabbfc 00000000 3e40: bfd43e78 ba1e0ae0 80aaf958 00000000 000000bc 000e7ef0 80af7a54 0011edd8 3e60: 00000000 0011edd8 00000001 bfd43e80 80071230 8007129c 60000013 ffffffff [<80061990>] (__dabt_svc+0x70/0xa0) from [<8007129c>] (bus_freq_update+0x80/0x1d0) [<8007129c>] (bus_freq_update+0x80/0x1d0) from [<8008657c>] (set_cpu_freq+0x1b8/0x3a0) [<8008657c>] (set_cpu_freq+0x1b8/0x3a0) from [<800868bc>] (mxc_set_target+0x10c/0x2bc) [<800868bc>] (mxc_set_target+0x10c/0x2bc) from [<8039e698>] (__cpufreq_driver_target+0x50/0x64) [<8039e698>] (__cpufreq_driver_target+0x50/0x64) from [<803a2eac>] (cpufreq_interactive_freq_down+0x11c/0x14c) [<803a2eac>] (cpufreq_interactive_freq_down+0x11c/0x14c) from [<800aab34>] (process_one_work+0x10c/0x38c) [<800aab34>] (process_one_work+0x10c/0x38c) from [<800ab36c>] (worker_thread+0x170/0x37c) [<800ab36c>] (worker_thread+0x170/0x37c) from [<800af80c>] (kthread+0x80/0x88) [<800af80c>] (kthread+0x80/0x88) from [<80062aa4>] (kernel_thread_exit+0x0/0x8) Code: eaff9868 80537f4c 809db0fc e590316c (e5130004) \00\F0
after some time(2 to 3 hour) it shoots this error...
-
There's a faulty module doing something wrong.
-
That doesn't mean it doesn't do something wrong. For example, a small memory (one byte) leak can take days until it eats all the system's memory but it still will.