Solved error : QProcessPrivate::createPipe: Cannot create pipe 0x2ed031ac: Too many open files
-
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 ?
-
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.
-
@SGaist ok i will check that file and get back to u...and i am using QT creator 4.8.5 and in that there is no proper documentation for Qserialport thats why i am using normal serial port terminal available in ubuntu 12.04.
-
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.
-
the module is working properly for 4 hours or 5 hour then automatically turned off and in serial port terminal show above mention output...
-
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.
-
i can't figure out what is the issue related to it error...
-
The driver used to talk with the device might be faulty.
-
@SGaist i am not sure about this...for temporary solution i have to reboot my device after 3 hour.. ..
-