Results 1 to 6 of 6

Thread: Strange behavior with simple QApplication and valgrind

  1. #1
    Join Date
    Jan 2014
    Posts
    76
    Thanks
    17
    Qt products
    Qt5
    Platforms
    Unix/X11 Windows

    Default Strange behavior with simple QApplication and valgrind

    I create simple widgets project and run valgrind, on output i get 10 000 errors, looks like on screenshot

    screen.jpg

    In terminal I run valgrind by means of command

    valgrind --tool=memcheck --leak-check=full ./ubuntu

    and on output i get

    ==3177== LEAK SUMMARY:
    ==3177== definitely lost: 4,181 bytes in 19 blocks
    ==3177== indirectly lost: 12,821 bytes in 537 blocks
    ==3177== possibly lost: 41,171 bytes in 603 blocks
    ==3177== still reachable: 1,429,930 bytes in 16,809 blocks
    ==3177== suppressed: 0 bytes in 0 blocks


    Why? Where?!
    How I can disabled errors which concern QT or gcc problems?
    Thanks,

  2. #2
    Join Date
    Sep 2009
    Location
    Wroclaw, Poland
    Posts
    1,394
    Thanked 342 Times in 324 Posts
    Qt products
    Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Strange behavior with simple QApplication and valgrind

    You can use a feature called "suppression file" : link
    Attached a file I use when debugging Qt applications, I suppressed every Qt library, as well as various system libs (fontconfig, libx11, libgtk etc.). You may want to change the hardcoded paths to match your system if you want to us this file, though.
    Qt Code:
    1. {
    2. </usr/local/Qt-5.2.1/lib/libQt5Widgets.so.*_cond>
    3. Memcheck:Cond
    4. ...
    5. obj:/usr/local/Qt-5.2.1/lib/libQt5Widgets.so.*
    6. ...
    7. }
    8. {
    9. </usr/local/Qt-5.2.1/lib/libQt5Widgets.so.*_leak>
    10. Memcheck:Leak
    11. ...
    12. obj:/usr/local/Qt-5.2.1/lib/libQt5Widgets.so.*
    13. ...
    14. }
    15. {
    16. </usr/local/Qt-5.2.1/lib/libQt5Gui.so.*_cond>
    17. Memcheck:Cond
    18. ...
    19. obj:/usr/local/Qt-5.2.1/lib/libQt5Gui.so.*
    20. ...
    21. }
    22. {
    23. </usr/local/Qt-5.2.1/lib/libQt5Gui.so.*_leak>
    24. Memcheck:Leak
    25. ...
    26. obj:/usr/local/Qt-5.2.1/lib/libQt5Gui.so.*
    27. ...
    28. }
    29. {
    30. </usr/local/Qt-5.2.1/lib/libQt5Core.so.*_cond>
    31. Memcheck:Cond
    32. ...
    33. obj:/usr/local/Qt-5.2.1/lib/libQt5Core.so.*
    34. ...
    35. }
    36. {
    37. </usr/local/Qt-5.2.1/lib/libQt5Core.so.*_leak>
    38. Memcheck:Leak
    39. ...
    40. obj:/usr/local/Qt-5.2.1/lib/libQt5Core.so.*
    41. ...
    42. }
    43. {
    44. </usr/local/Qt-5.2.1/lib/libQt5Network.so.*_cond>
    45. Memcheck:Cond
    46. ...
    47. obj:/usr/local/Qt-5.2.1/lib/libQt5Network.so.*
    48. ...
    49. }
    50. {
    51. </usr/local/Qt-5.2.1/lib/libQt5Network.so.*_leak>
    52. Memcheck:Leak
    53. ...
    54. obj:/usr/local/Qt-5.2.1/lib/libQt5Network.so.*
    55. ...
    56. }
    57. {
    58. </usr/local/Qt-5.2.1/lib/libQt5Multimedia.so.*_cond>
    59. Memcheck:Cond
    60. ...
    61. obj:/usr/local/Qt-5.2.1/lib/libQt5Multimedia.so.*
    62. ...
    63. }
    64. {
    65. </usr/local/Qt-5.2.1/lib/libQt5Multimedia.so.*_leak>
    66. Memcheck:Leak
    67. ...
    68. obj:/usr/local/Qt-5.2.1/lib/libQt5Multimedia.so.*
    69. ...
    70. }
    71. {
    72. </usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*_cond>
    73. Memcheck:Cond
    74. ...
    75. obj:/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*
    76. ...
    77. }
    78. {
    79. </usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*_leak>
    80. Memcheck:Leak
    81. ...
    82. obj:/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*
    83. ...
    84. }
    85. {
    86. </usr/lib/x86_64-linux-gnu/libgobject-2.0.so.*_cond>
    87. Memcheck:Cond
    88. ...
    89. obj:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.*
    90. ...
    91. }
    92. {
    93. </usr/lib/x86_64-linux-gnu/libgobject-2.0.so.*_leak>
    94. Memcheck:Leak
    95. ...
    96. obj:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.*
    97. ...
    98. }
    99. {
    100. </lib/x86_64-linux-gnu/libexpat.so.*_cond>
    101. Memcheck:Cond
    102. ...
    103. obj:/lib/x86_64-linux-gnu/libexpat.so.*
    104. ...
    105. }
    106. {
    107. </lib/x86_64-linux-gnu/libexpat.so.*_leak>
    108. Memcheck:Leak
    109. ...
    110. obj:/lib/x86_64-linux-gnu/libexpat.so.*
    111. ...
    112. }
    113. {
    114. </usr/lib/x86_64-linux-gnu/libcairo.so.*_cond>
    115. Memcheck:Cond
    116. ...
    117. obj:/usr/lib/x86_64-linux-gnu/libcairo.so.*
    118. ...
    119. }
    120. {
    121. </usr/lib/x86_64-linux-gnu/libcairo.so.*_leak>
    122. Memcheck:Leak
    123. ...
    124. obj:/usr/lib/x86_64-linux-gnu/libcairo.so.*
    125. ...
    126. }
    127. {
    128. </usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*_cond>
    129. Memcheck:Cond
    130. ...
    131. obj:/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*
    132. ...
    133. }
    134. {
    135. </usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*_leak>
    136. Memcheck:Leak
    137. ...
    138. obj:/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*
    139. ...
    140. }
    141. {
    142. </usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*_cond>
    143. Memcheck:Cond
    144. ...
    145. obj:/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*
    146. ...
    147. }
    148. {
    149. </usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*_leak>
    150. Memcheck:Leak
    151. ...
    152. obj:/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.*
    153. ...
    154. }
    155. {
    156. </usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.*_cond>
    157. Memcheck:Cond
    158. ...
    159. obj:/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.*
    160. ...
    161. }
    162. {
    163. </usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.*_leak>
    164. Memcheck:Leak
    165. ...
    166. obj:/usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.*
    167. ...
    168. }
    169. {
    170. </usr/lib/x86_64-linux-gnu/libpango-1.0.so.*_cond>
    171. Memcheck:Cond
    172. ...
    173. obj:/usr/lib/x86_64-linux-gnu/libpango-1.0.so.*
    174. ...
    175. }
    176. {
    177. </usr/lib/x86_64-linux-gnu/libpango-1.0.so.*_leak>
    178. Memcheck:Leak
    179. ...
    180. obj:/usr/lib/x86_64-linux-gnu/libpango-1.0.so.*
    181. ...
    182. }
    183. {
    184. </lib/x86_64-linux-gnu/libglib-2.0.so.*_cond>
    185. Memcheck:Cond
    186. ...
    187. obj:/lib/x86_64-linux-gnu/libglib-2.0.so.*
    188. ...
    189. }
    190. {
    191. </lib/x86_64-linux-gnu/libglib-2.0.so.*_leak>
    192. Memcheck:Leak
    193. ...
    194. obj:/lib/x86_64-linux-gnu/libglib-2.0.so.*
    195. ...
    196. }
    197. {
    198. </usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*_cond>
    199. Memcheck:Cond
    200. ...
    201. obj:/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*
    202. ...
    203. }
    204. {
    205. </usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*_leak>
    206. Memcheck:Leak
    207. ...
    208. obj:/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.*
    209. ...
    210. }
    211. {
    212. </usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.*_cond>
    213. Memcheck:Cond
    214. ...
    215. obj:/usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.*
    216. ...
    217. }
    218. {
    219. </usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.*_leak>
    220. Memcheck:Leak
    221. ...
    222. obj:/usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.*
    223. ...
    224. }
    225. {
    226. </usr/lib/x86_64-linux-gnu/libX11.so.*_cond>
    227. Memcheck:Cond
    228. ...
    229. obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
    230. ...
    231. }
    232. {
    233. </usr/lib/x86_64-linux-gnu/libX11.so.*_leak>
    234. Memcheck:Leak
    235. ...
    236. obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
    237. ...
    238. }
    239. {
    240. </usr/lib/nvidia-331/libGL.so.*_cond>
    241. Memcheck:Cond
    242. ...
    243. obj:/usr/lib/nvidia-331/libGL.so.*
    244. ...
    245. }
    246. {
    247. </usr/lib/nvidia-331/libGL.so.*_leak>
    248. Memcheck:Leak
    249. ...
    250. obj:/usr/lib/nvidia-331/libGL.so.*
    251. ...
    252. }
    253. {
    254. </usr/lib/x86_64-linux-gnu/libfontconfig.so.*_cond>
    255. Memcheck:Cond
    256. ...
    257. obj:/usr/lib/x86_64-linux-gnu/libfontconfig.so.*
    258. ...
    259. }
    260. {
    261. </usr/lib/x86_64-linux-gnu/libfontconfig.so.*_leak>
    262. Memcheck:Leak
    263. ...
    264. obj:/usr/lib/x86_64-linux-gnu/libfontconfig.so.*
    265. ...
    266. }
    267. {
    268. </usr/lib/x86_64-linux-gnu/libibus-1.0.so.*_cond>
    269. Memcheck:Cond
    270. ...
    271. obj:/usr/lib/x86_64-linux-gnu/libibus-1.0.so.*
    272. ...
    273. }
    274. {
    275. </usr/lib/x86_64-linux-gnu/libibus-1.0.so.*_leak>
    276. Memcheck:Leak
    277. ...
    278. obj:/usr/lib/x86_64-linux-gnu/libibus-1.0.so.*
    279. ...
    280. }
    281. {
    282. </usr/lib/x86_64-linux-gnu/libfreetype.so.*_cond>
    283. Memcheck:Cond
    284. ...
    285. obj:/usr/lib/x86_64-linux-gnu/libfreetype.so.*
    286. ...
    287. }
    288. {
    289. </usr/lib/x86_64-linux-gnu/libfreetype.so.*_leak>
    290. Memcheck:Leak
    291. ...
    292. obj:/usr/lib/x86_64-linux-gnu/libfreetype.so.*
    293. ...
    294. }
    295. {
    296. </lib/x86_64-linux-gnu/ld-2.19.so_cond>
    297. Memcheck:Cond
    298. ...
    299. obj:/lib/x86_64-linux-gnu/ld-2.19.so
    300. ...
    301. }
    302. {
    303. </lib/x86_64-linux-gnu/ld-2.19.so_leak>
    304. Memcheck:Leak
    305. ...
    306. obj:/lib/x86_64-linux-gnu/ld-2.19.so
    307. ...
    308. }
    To copy to clipboard, switch view to plain text mode 

  3. #3
    Join Date
    Jan 2014
    Posts
    76
    Thanks
    17
    Qt products
    Qt5
    Platforms
    Unix/X11 Windows

    Default Re: Strange behavior with simple QApplication and valgrind

    Thanks,
    I used your file, and it solved all of my problems with valgrind but I have one more question - now on console output i get

    ==11418== 48 bytes in 1 blocks are still reachable in loss record 6,912 of 14,131
    ==11418== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11418== by 0x4153B4: Ui_MainWindow::setupUi(QMainWindow*) (ui_mainwindow.h:622)
    ==11418== by 0x408BD3: MainWindow::MainWindow(QWidget*) (mainwindow.cpp:9)
    ==11418== by 0x408867: main (main.cpp:22)
    ==11418==
    ==11418== 48 bytes in 1 blocks are still reachable in loss record 6,913 of 14,131
    ==11418== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11418== by 0x4153F9: Ui_MainWindow::setupUi(QMainWindow*) (ui_mainwindow.h:624)
    ==11418== by 0x408BD3: MainWindow::MainWindow(QWidget*) (mainwindow.cpp:9)
    ==11418== by 0x408867: main (main.cpp:22)
    ==11418==
    ==11418== 48 bytes in 1 blocks are still reachable in loss record 6,914 of 14,131
    ==11418== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11418== by 0x415454: Ui_MainWindow::setupUi(QMainWindow*) (ui_mainwindow.h:627)
    ==11418== by 0x408BD3: MainWindow::MainWindow(QWidget*) (mainwindow.cpp:9)
    ==11418== by 0x408867: main (main.cpp:22)
    ==11418==
    ==11418== 48 bytes in 1 blocks are still reachable in loss record 6,966 of 14,131
    ==11418== at 0x4C2B0E0: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==11418== by 0x408C6B: MainWindow::MainWindow(QWidget*) (mainwindow.cpp:23)
    ==11418== by 0x408867: main (main.cpp:22)


    Should I be worried?

    Summary looks good

    ==11418== LEAK SUMMARY:
    ==11418== definitely lost: 0 bytes in 0 blocks
    ==11418== indirectly lost: 0 bytes in 0 blocks
    ==11418== possibly lost: 0 bytes in 0 blocks
    ==11418== still reachable: 6,112 bytes in 114 blocks
    ==11418== suppressed: 12,570,128 bytes in 30,005 blocks
    ==11418==
    ==11418== For counts of detected and suppressed errors, rerun with: -v
    ==11418== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 828 from 828)
    Last edited by atomic; 25th February 2015 at 16:57.

  4. #4
    Join Date
    Sep 2009
    Location
    Wroclaw, Poland
    Posts
    1,394
    Thanked 342 Times in 324 Posts
    Qt products
    Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Strange behavior with simple QApplication and valgrind

    I used your file, and it solved all of my problems with valgrind
    Great, glad I could help
    Should I be worried?
    I don't know. "Still reachable" simply means that you still (after the main() returns) have a valid but not released pointer to a memory block, maybe you forgot to delete the ui object of the main form ? This shouldn't be a problem, as the memory allocated by the app is automatically released after the program exit. Maybe you have something like this:
    Qt Code:
    1. int main(int argc, char ** argv){
    2. QApplication app(argc,argv);
    3. MyWidget * widget = new MyWidget;
    4. widget->show();
    5. return app.exec();
    6. }
    To copy to clipboard, switch view to plain text mode 
    here the memory pointed to by the "widget" pointer will be considered as "still reachable", but as you can see it's not a very harmful "leak".

  5. #5
    Join Date
    Jan 2014
    Posts
    76
    Thanks
    17
    Qt products
    Qt5
    Platforms
    Unix/X11 Windows

    Default Re: Strange behavior with simple QApplication and valgrind

    No, no In main function everything is ok and I do not forgot delete ui form

    These errors are displayed only when I set inside Qt Creator Tool->Options->Analyzer "Show reachable and indirectly lost blocks".

    analyzer_options.jpg

    And only when I use this code

    Qt Code:
    1. QDesktopServices::openUrl( QUrl( "/home" ));
    To copy to clipboard, switch view to plain text mode 

  6. #6
    Join Date
    Sep 2009
    Location
    Wroclaw, Poland
    Posts
    1,394
    Thanked 342 Times in 324 Posts
    Qt products
    Qt4 Qt5
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Strange behavior with simple QApplication and valgrind

    And only when I use this code
    I wouldn't be worried about it then.

  7. The following user says thank you to stampede for this useful post:

    atomic (25th February 2015)

Similar Threads

  1. QLCDNumber strange behavior!
    By saman_artorious in forum Qt Programming
    Replies: 1
    Last Post: 27th October 2013, 13:08
  2. Replies: 12
    Last Post: 23rd April 2011, 18:42
  3. Strange behavior of QSyntaxHighlighter in Qt3
    By lorebett in forum Qt Programming
    Replies: 1
    Last Post: 18th January 2009, 14:50
  4. Strange resize behavior
    By Lykurg in forum Newbie
    Replies: 3
    Last Post: 9th January 2007, 13:56
  5. scrollbars strange behavior
    By siniy in forum Qt Programming
    Replies: 6
    Last Post: 29th December 2006, 10:27

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.