On 19/04/2020 12:20 a.m., Landry Breuil wrote:
On Sun, Apr 19, 2020 at 07:59:04AM +0200, Landry Breuil wrote:
On Sat, Apr 18, 2020 at 11:29:11PM -0600, Steve Williams wrote:
Hi,

OpenBSD 6.6 (GENERIC.MP) #7: Thu Mar 12 11:55:22 MDT 2020

I am working on trying to get Apache Guacamole working (I've got it
compiling) to provide RDP and SSH access to my home network.  I have the ssh
access working, but Guacamole (guacd) is dumping a core in freerdp
(freerdp-2.0.0rc1p4).   Based on the stack trace, I am assuming an issue
with the more strict malloc that OpenBSD uses.  I checked and see that a
final release of FreeRDP (2.0.0) was made available April 9, 2020.

Is anyone working on porting the new version of FreeRDP?  I could not see a
"MAINTAINER" in the Makefile.
Newer versions of freerdp needs some methods not available on OpenBSD,
check
http://openbsd-archive.7691.n7.nabble.com/x11-freerdp-update-to-2-0-0-rc4-td360502.html#a360567
and https://marc.info/?t=152482492600005&r=1&w=2 and
https://github.com/FreeRDP/FreeRDP/issues/4592.
there's a comment about it in the port Makefile:


# XXX This version has known security issues.

# XXX Can't be updated without either timer_create() and friends or
#     an alternative timer implementation (as was done for OSX)


I've been using OpenBSD since version 2.7 and am a C programmer of 30+
years.
glad if you can help on this then ! build a debug package for the port
to have proper symbols for the backtrace..
more details on this after i've actually looked - its a cmake port which
doesnt always cope well yet with our DEBUG_PACKAGES framework, you can try with
DEBUG_PACKAGES=${BUILD_PACKAGES} which will give you this:

Writing /usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/debug-pkg/Makefile.new
Writing /usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/debug-pkg/PLIST
Renaming /usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/debug-pkg/Makefile.new to 
Makefile
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/bin/winpr-hash
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/bin/winpr-makecert
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/bin/xfreerdp
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/lib/libfreerdp-client2.so.0.0
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/lib/libfreerdp2.so.0.0
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/lib/libwinpr-tools2.so.0.0
Extracting debug info from 
/usr/obj/ports/freerdp-2.0.0rc1/fake-amd64/usr/local/lib/libwinpr2.so.0.0
Create /usr/ports/packages/amd64/all/freerdp-2.0.0rc1p4.tgz
Creating package freerdp-2.0.0rc1p4
Creating package debug-freerdp-2.0.0rc1p4
Link to /usr/ports/packages/amd64/ftp/freerdp-2.0.0rc1p4.tgz
Link to /usr/ports/packages/amd64/ftp/debug-freerdp-2.0.0rc1p4.tgz

and then install the debug-freerdp package & check if gdb find syms.

Tried it here and it doesnt seem to help (blame cmake that forcefully strips 
syms when CMAKE_BUILD_TYPE=Release...):

nikki:~/ $egdb /usr/local/bin/xfreerdp
Reading symbols from /usr/local/bin/xfreerdp...(no debugging symbols 
found)...done.

Another option worth a try, you can locally add
-DCMAKE_BUILD_TYPE=RelWithDebInfo to CONFIGURE_ARGS to build a local package
with debug symbols enabled via cmake. Might work.

Landry


Hi,

Thanks for the fast replies :)

TL;DR

I am missing something on building the Debug packages.  I modified the Makefile per your other email thread but there must be more magic as I don't see any of the output pertaining to "Extracting debug info..."

Details:

It is a bit disappointing that the newer version of freerdp needs significant work to have it functional in OpenBSD.  I had a look at the Apple code for the timers... the whole timers file.  Not very pleasant with all the #ifdef's all over the place.  I am sure greater minds than mine have looked at what it would take to have it working in OpenBSD.

I guess that leaves debugging the existing code.  I started by comparing the 2.0rc1 /winpr/libwinpr/crt/alignment.c with the version in 2.0 and there have been quite a few changes.  It seems most of them are for clarity of code,  but hidden in the changes must be some alignment challenges.  Lots of math going on... and a few confusing comments.

For example:
    /* alignment must be a power of 2 */
    if (alignment % 2 == 1)
        return NULL;

That's not a "power" of two, that's a "multiple" of 2.  What did they really mean??  I assume they meant multiple... but that's not what the code is doing.

Regardless...

What magic do I need to build freerdp-2.0.0rc1 with debugging symbols?

Also, in your response, it shows you using "egdb".  Is this something different than gdb?  I couldn't find it anywhere...

Thanks,
Steve W.

Reply via email to