Opened 8 months ago

Closed 8 months ago

Last modified 8 months ago

#18858 closed bug (fixed)

Some QT applications crash on current revision

Reported by: bolsen Owned by: nobody
Priority: normal Milestone: R1/beta5
Component: System Version: R1/beta4
Keywords: Cc:
Blocked By: Blocking: #18859
Platform: All

Description

Testing this on hrev57662. After updating, these programs I have installed failed to run:

  • falkon
  • nextcloud
  • kolourpaint
  • kdevelop
  • kstars

They all fail the same way. I think this is related to changes here: https://cgit.haiku-os.org/haiku/commit/?id=43d1a0dc3c70d1f9c563769881e5be5a7e67842b. The previous hrev works fine.

Attachments (2)

Falkon-2747-debug-23-03-2024-10-31-40.report (4.0 KB ) - added by bolsen 8 months ago.
Falkon crash report for main process
Falkon-2760-debug-23-03-2024-10-31-43.report (4.0 KB ) - added by bolsen 8 months ago.
Falkon crash report (for a tab?)

Download all attachments as: .zip

Change History (6)

by bolsen, 8 months ago

Falkon crash report for main process

by bolsen, 8 months ago

Falkon crash report (for a tab?)

comment:1 by bolsen, 8 months ago

I posted a dump trying of the OS trying to load Falkon and it does seem that it was attempting to load the executable looking at the stack in the report.

comment:2 by bolsen, 8 months ago

One other observation for now. Looking at the report, it looks like the line:

const char *semicolon = strchr(rpath, ';'); 

could be the culprit since the "rpath" might be NULL if pathString == runpath. Thus, it might then segfault here.

This is in: src/system/runtime_loader/runtime_loader.cpp

-	// try rpath (DT_RPATH)
-	if (rpath != NULL) {
+	// try runpath or rpath (DT_RUNPATH or DT_RPATH)
+	const char* pathString = runpath;
+	if (pathString == NULL)
+		pathString = rpath;
+	if (pathString != NULL) {
 		// It consists of a colon-separated search path list. Optionally a
 		// second search path list follows, separated from the first by a
 		// semicolon.
 		const char *semicolon = strchr(rpath, ';');
-		const char *firstList = (semicolon ? rpath : NULL);
-		const char *secondList = (semicolon ? semicolon + 1 : rpath);
+		const char *firstList = (semicolon ? pathString : NULL);
+		const char *secondList = (semicolon ? semicolon + 1 : pathString);
Last edited 8 months ago by bolsen (previous) (diff)

comment:3 by waddlesplash, 8 months ago

Milestone: UnscheduledR1/beta5
Resolution: fixed
Status: newclosed

Fixed in hrev57664.

comment:4 by waddlesplash, 8 months ago

Blocking: 18859 added
Note: See TracTickets for help on using tickets.