ScarletFire's Build: Windows Preview

Thanks to the help and tireless dedication of user thescarletfire, and after weeks of testing, restructuring, fixing and improving, I'm happy to be able to offer one of the biggest updates to SoulseekQt in a very long time. These are the big three changes/additions:

  • For ScarletFire's build, SoulseekQt was ported from Qt4 to Qt5. The result is a cleaner user-interface, and better Windows 8 support.
  • Massively improved memory utilization thanks primarily to Google's sparse hash-map, a hyper-efficient data container that uses about half as much memory as its predecessor. More efficient indexing of your shared files should further contribute to the amount of memory saved.
  • The ability to share folders privately and visibly. Private visible shared files will appear at the bottom of the search results list and when browsing a user's share with a lock icon next to them. You may also turn off the display of private visible shared files if you do not wish to see them. In all cases, private visible shared files will only appear to users of this build or newer.

Smaller improvements include:

  • SoulseekQt now connects to the Soulseek server on port 80, which is less likely to be blocked by ISPs.
  • The initial re-scanning of shares at startup should no longer cause the client to freeze.
  • Retrieval of your shared files list by another user should now be a lot faster.
  • Change account password feature.
  • Various memory leaks were eliminated.
  • You should now be able to browse your own share and perform any other P2P functions with yourself.
  • Listening port number is randomly generated the first time the client is run.
  • Part tokens in incoming search requests are now properly processed.

Though a great deal changed for the better, new problems are possible and even likely considering the vast restructuring of code that took place between this build and the last. This is also the reason I'm only able to offer a Windows build for the time being. I'll be adding links to the download page for the other platforms as I complete the ports.

For now, the Windows build:

[link removed, please use the download page]

Thanks, Nir

Comments

Great update!
but my chatlogs dissapeared after this update ... just noticing. They were still usefull :/
How can i get them back?
thanks

I'm glad you're liking the update Wimalayan! One of the things that unfortunately changed in the transition from Qt4 to Qt5 is what Qt5 considers to be the application data or documents path. Your old logs should be found in Documents/Soulseek Chat Logs. The new chat log location can be found by clicking 'Open Log Folder' when viewing any of the logs.

Thanks, Nir

thescarletfire's picture

Did they disappear in the client or the actual txt files in your SoulseekQt folder? The txt files should still be there, right?

Yes, its the txt files that disappeared
The new chatlogs are in C:\Users\X\AppData\Local\SoulseekQt\Soulseek Chat Logs\Users
but thats where the old ones should be aswell i thought

Close. The old location did not have the SoulseekQt folder in the path.

Old location:
C:\Users\X\AppData\Local\Soulseek Chat Logs

New location:
C:\Users\X\AppData\Local\SoulseekQt\Soulseek Chat Logs

Just copying the folder to the new location seems to work.

Ow what tha F. Thanks! i must have overlooked that somehow. Even the search didn't find them back then. And its just the folder next to the new one o_O
Glad i checked this topic again...

Cheers master_shortpants ;)

I'll be adding links ... as I complete the ports.
Halt! :)

Whilst it's simply fantastic what you've put up in this relatively short time between your loaded schedule, there is one woe I'm having: your move from Qt4 to 5. :-O

Whilst this is perfect on Windows, it must be considered on Linux/MacOS that virtually any current X Window system would rely very heavily on Qt; especially if GNOME/KDE/LXDE is running on top. That is, if your new version used shared libraries, thus forcing an update from 4 to 5, it would mean that we'll have to face the fact of updating nearly our whole base system!
That said, I'd kindly ask you to please consider *very* cautiously whether a move from 4 to 5 on non-Windows OS is actually mandatory...

You raise a good point. On Mac the Qt libraries are bundled with the DMG file. On Linux the executable would have to be linked against a static build of Qt to avoid these issues.

Yes...or...you could make 2 branches: the one with shared libraries, the other static. Though a bit harder to maintain, it might avoid another bunch of complaints to come up in a short time, such as: "Nir, my whole system is now based on Qt5, so why do I have to use a statically linked build then?" ;-)

hi there

i have a mac book and want to download soulseek as i used it on my windowns laptop and it was great but someone else installed it for me. i have gone to your main page and downloaded the latest QT for Mac but it doesnt seem to stick in mt system? it says “SoulseekQt” is an application downloaded from the Internet. Are you sure you want to open it? every time i want to open it?
can u please help me with step by step instructions on how to load it perm on my system?

thanks
diesel

I'm actually not sure how you get around that. Any Mac experts care to weigh in?

psynaturecybine's picture

This build is working smoother than previous ones! now...instead of complaining about small, less important missing features, i'd like to point out two bigger issues - for me most annoying:

#1. SoulseekQT is still using lot of cpu(qt property, or program just need more work?)
#2. When SoulseekQT is running, i can't browse internet the way i used to. whole connection is slowed down, even though slskQT is using just small amount of bandwidth.

Can anyone confirm the second point? i haven't tried slskqt on any other machine recently, and i wont be able to do it anytime soon, so i don't know if its just me or not.
Keep up good work, and thanks to both of You!

thescarletfire's picture

Hi there,

What are your PC specs? I have never seen SoulseekQt use more than 8% CPU (under max load), however RAM usage may be a different issue. In previous versions I had bad RAM spikes, but this new build keeps the client under 400MB RAM (under max load) in my experience.

I have seen other people in the past complain about web browsing slowed or something while using Soulseek but to be honest I've never encountered the slightest web-slowdown so I can't help with that part. Sorry :(

I confirm. Soulseek NG was a true cpu KILLER, especially when leaving it running for one week without interruption.
But SoulseekQt actually has a small CPU footprint, whereas the memory usage can easily exceed 1 GB especially if you browse users whose shares need minutes to display due to their complexity or simply because they're insanely large.

psynaturecybine's picture

hi, hello
my pc is crap, probably nova-days "smart"phones are faster than my nb100 notebook. ye, ram usage is high(about 100MB), but thats not a problem for me. i do understand high cpu usage on my machine, yet, old version was less cpu hungry - so i guess its about Qt itself (and not the way slskqt is written)

it is weird about slowed down connection, i know. hope some other, smarter people will figure it out one day. just to be clear - i have never encounter this before, with any other program.

thescarletfire's picture

Qt can be resource hungy compared to something like GTK but in general I find that Soulseek's pull on CPU/RAM is directly related to the amount of shares.

Good luck!

Dyld Error Message:
Library not loaded: /Users/*/QtMultimedia.framework/Versions/5/QtMultimedia
Referenced from: /Users/USER/SoulseekQt5.app/Contents/MacOS/SoulseekQt
Reason: image not found

Great update!! Hadn't done the previous one either so i can clearly see the U/I smotthing and i love the pause option in downloads.
Unlike other until now i can say that i have a cap of 3% (8Gb) Ram usage while download and uploading and having 2 user-files open and sharing 7k files.
I do have a minor problem with the build-update register of the update.exe , It's build 0/0/0 for me and slsk keeps promting for update...Hope it doesn't affect anything...

My actual question is ...If i copy the log dir will the new client recognize the old files?

Thanks again..

[EDIT]
I can't seem to be able to add directly to wishlist either and there is no function for it..-?

Hey Kaiyum, any chance you can post a screenshot of the update prompt?

Thanks, Nir

soulseek crash when start , here is the info :Process: SoulseekQt [985]
Path: /Volumes/VOLUME/SoulseekQt.app/Contents/MacOS/SoulseekQt
Identifier: com.yourcompany.SoulseekQt
Version: ???
Code Type: X86-64 (Native)
Parent Process: launchd [282]
User ID: 501

Date/Time: 2013-07-07 09:10:21.111 -0600
OS Version: Mac OS X 10.8.4 (12E55)
Report Version: 10

Interval Since Last Report: 231285 sec
Crashes Since Last Report: 5
Per-App Crashes Since Last Report: 4
Anonymous UUID: 634D352C-0E59-3067-D7D8-ABBA6C0F2336

Crashed Thread: 0

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
Library not loaded: /Users/*/QtMultimedia.framework/Versions/5/QtMultimedia
Referenced from: /Volumes/VOLUME/SoulseekQt.app/Contents/MacOS/SoulseekQt
Reason: image not found

Binary Images:
0x100000000 - 0x1002d8fff +com.yourcompany.SoulseekQt (???) <4996FE81-6BA2-323E-B3D3-BCC1D0A1A100> /Volumes/VOLUME/SoulseekQt.app/Contents/MacOS/SoulseekQt
0x7fff60408000 - 0x7fff6043c93f dyld (210.2.3) /usr/lib/dyld
0x7fff82605000 - 0x7fff82617ff7 libz.1.dylib (43) <2A1551E8-A272-3DE5-B692-955974FE1416> /usr/lib/libz.1.dylib

Model: MacBookPro3,1, BootROM MBP31.0070.B07, 2 processors, Intel Core 2 Duo, 2.2 GHz, 4 GB, SMC 1.16f11
Graphics: NVIDIA GeForce 8600M GT, GeForce 8600M GT, PCIe, 128 MB
Memory Module: BANK 0/DIMM0, 2 GB, DDR2 SDRAM, 667 MHz, 0x7F7F7F5800000000, 0x544D53324753323634443038313636354156
Memory Module: BANK 1/DIMM1, 2 GB, DDR2 SDRAM, 667 MHz, 0x7F7F7F5800000000, 0x544D53324753323634443038313636354156
AirPort: spairport_wireless_card_type_airport_extreme (0x168C, 0x87), Atheros 5416: 4.0.72.0-P2P
Bluetooth: Version 4.1.4f2 12041, 2 service, 18 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en1
PCI Card: pci168c,24, sppci_othernetwork, PCI Slot 5
Serial ATA Device: WDC WD7500BPKT-75PK4T0, 750.16 GB
Parallel ATA Device: WDC WD7500BPKT-22PK4T0, 750.16 GB
USB Device: Built-in iSight, apple_vendor_id, 0x8502, 0xfd400000 / 2
USB Device: Optical Mouse, 0x0458 (KYE Systems Corp.), 0x003a, 0x1d100000 / 2
USB Device: Apple Internal Keyboard / Trackpad, apple_vendor_id, 0x021b, 0x5d200000 / 3
USB Device: IR Receiver, apple_vendor_id, 0x8242, 0x5d100000 / 2
USB Device: Bluetooth USB Host Controller, apple_vendor_id, 0x8205, 0x1a100000 / 2
USB Device: USB Receiver, 0x046d (Logitech Inc.), 0xc52b, 0x1a200000 / 3

There appears to be a problem with the Mac deployment utility that comes with Qt 5.1... I'm looking into possible solutions.

I'm unable to add more than one folder without it locking up and freezing. I'm running Windows 8. No problems adding folders with the previous builds.

This build should give you a visual indication of the scanning as it progresses, can you please see if the file count keeps going up or whether it hangs at some point:

https://www.dropbox.com/s/v93k4lyg5mgc3e6/SoulseekQt-ScarletFire-test5.exe

Thanks, Nir

thescarletfire's picture

That's so cool, Nir. It's nice to see the progress like that! Looking good here, Windows 8 x64.

I thought you'd like that one ;)

this new build doesn't save my current download and user list whenever i restart the client. so i have to keep adding the same files to queue.
please can you fix this problem?

also i'm getting an update alert for the older build, here's a screenshot:
http://oi42.tinypic.com/j0vbf4.jpg

The 7/8 build should have the data save problem fixed, is that the build you downloaded? This one should hopefully fix the 0/0/0 build date problem:

https://www.dropbox.com/s/6ru9xacp2y5yten/SoulseekQt-ScarletFire-test6.exe

this new build solved the problems, thanks!

Glad to hear! Thank you for letting me know.

thescarletfire's picture

This build rocks. RAM has been below 300MB for days now, 24/7 uptime. Thanks Nir. Big thanks.

I'm actually not sure why this build's memory consumption is so much more stable, and why it hiccups so much less. I optimized a lot of things, but nothing that should outright improve it across the board. Well, I'm certainly not going to check a gift horse in the mouth ;)

Thanks, Nir

thescarletfire's picture

Maybe it's nothing "new" in this build per se but it's staying consistently low/stable - I'll take it!

The new user interface is like coming home. Much improved. Thanks for the work!

Someone mentioned that the internet became slower. Seems I'm experiencing the opposite. Pages load noticeably faster oO ?

Btw, I guess it's righteous that the build is called ScarletFire's but the SLSK taskbar button is renamed to that too. What I see is 'ScarletFire's Souls...' Would be very nice to switch those words around in the next version. Something like 'SoulseekQT ScarletFire's build xxxx.x.xx'

Thanks purep! That's a good idea, I'll make the change in the next build.

doomkrad's picture

Thank You's and small glitch

Hi Nir!
I just installed SoulseekQt-2013-7-10, all seems to be well so far. I only had to move the chat logs' and the rooms' folder [content] to the new location.
Thank you. : )

Just one (rather cosmetic) glitch:
in the Wish List Search area, if there are more tabs open than the window can accommodate, the left and tight arrows don't become grey when the-very-first - or the-very-last - tab is shown (as it was the case in the previous version).

Best regards.

[edit]

I just rescanned my shares too. The new release is once more as smooth as silk: no freezing, the CPU load doesn't seem to change as a result, there's also a 'live' window showing the progress! ^_^
Thanks heaps!

Thanks doomkrad! The cosmetic issue is probably part of the new Qt5 theme, I'm not sure if there's an easy fix but I'll look into it.

Cheers, Nir

fireofhercuntorder's picture

Hello My Dear Nir.I have to say at first that my 2 accounts, both slsk program and forum account have been hacked by a damn slsk user who got access to my computer,webbrowser and all that pwd shit i had, which doesnt cost shit, tho its nessesary for my to tell ya that.so i would not talk or do via GOA TRANCE (username) anymore.
and about these thing happening to soulseek im very sad and worried, about this hacking group which is called SCARLETFIRE.they are taking our bank pwds , our personal info and all that via slsk. I have some info that may help you my dear friend:

dllhost.exe is a process belonging to Microsoft Windows Operating System. The dllhost.exe file manages DLL based applications. This program is important for the stable and secure running of your computer and should not be terminated.

dllhost.exe should not be disabled, required for essential applications to work properly.. It is highly recommended to Run a Free Performance Scan from rom http://www.liutilities.com/products/camp… to automatically optimize memory, CPU and Internet Settings.

What is a COM surrogate?

Often times, COM objects are defined in DLLs. A DLL is a Dynamically Linked Library and not exactly a program - even though it contains programming code. DLLs are generally designed to be loaded when needed by a program and the code within the singly loaded instance can be shared across other programs. The difference is, when comparing a standard DLL to a COM DLL is that each program would, in the case of a NewsItem in a standard DLL, own their own copy of the NewsItem. With COM, each program can share the same copy of the NewsItem.

The only problem is, DLLs are not, as I stated, exactly executable programs. You cannot double-click a DLL and run it like you can a program. DLLs have to be loaded and started by a program.

Microsoft has provided a program from which a COM DLL can be loaded without the developer having to write the program to load the DLL. This program is called dllhost.exe. Dllhost.exe is also called the COM surrogate. The COM surrogate can load a DLL and make the objects created by the code in that DLL available to other programs on your PC and, if your firewall permits it and the COM DLL was written to do so, to programs on your local network, or even to programs running anywhere on the Internet.

What's wrong with Dllhost?

There are serious risks in doing this and Microsoft should abandon the practice immediately. I really had hoped they would do so given their stated interests in improving security with Windows Vista. When you allow access through your firewall to dllhost.exe, you open your firewall to every single dllhost.exe instance in your PC:

http://blogs.msdn.com/robgruen/archive/2

Dllhost and two related applications, rundll32 and svchost, while having legitimate system uses, can all be used to hide the process that is really running on your PC. They each host DLLs, allowing the DLLs to be run as applications. But when you use TaskManager to view running applications, the actual DLL's running are not listed, only the hosts are listed. Each of them fail to display the real name or file location of the processes that they hide. And the risks outlined in the link above apply equally to runndll32, svchost, and dllhost

While there are tools by which you can determine what applications these three hosts are hiding from you, those tools are generally considered advanced tools. That means that, for most users, all three of those hosts are effective means of hiding programs.

Like I said, I wish Microsoft would drop all three of these tools immediately. There is no reason for an application to be built in a DLL rather than in a real executable.

fireofhercuntorder's picture

HOW TO KNOW ABOUT IT ?!!?!?!

http://www.howtogeek.com/howto/6152/use-advanced-tools-to-troubleshoot-performance-problems-in-windows-7/

the link comes with pictures,here is just the text of that link:

Use Advanced Tools to Troubleshoot Performance Problems in Windows 7
You have your new Windows 7 system up and running, but suddenly you realize some things are not running as smoothly as they once did. Today we take look at using the hidden but useful advanced system tools in Windows 7 to troubleshoot a problem.

Advanced System Tools

There is a very handy collection of system utilities that are included in Windows 7 and Vista that can help you troubleshoot problems that may arise. For some reason Microsoft felt the need to bury them in the OS so they’re not immediately apparent to most users. Here we take a look at accessing the diagnostic tools and briefly cover some of what’s included.

To get to the tools type Performance Info into the search box in the Start menu and hit Enter.

In the Performance Information and Tools windows click on Advanced Tools.

Alternately you could click through to Control Panel \ All Control Panel Items \ Performance Information and Tools \ Advanced Tools …see what I mean by buried?

What’s Included

It opens up a list of different tools you can use to monitor different aspects of the system performance. From here you can do several things like defrag the hard drive, check Event Viewer, and even re-rate the Experience Index score.

Notice there is a column for Performance issues you can click on to get additional details on how to correct the problem. In this example it shows a driver interfering with Sleep mode and that changing visual settings will improve performance.

In additional details it tells us turning off the Aero feature will improve performance. I find it odd that MS would alert you to turn off Aero as it’s a hyped feature to the interface since XP. At least they’re honest in telling you Aero can slow performance, especially with under powered video cards.

Even Viewer is a great tool used by administrators that records event errors that happen “behind the scenes” so to speak. The information in these logs are meant for admins and advanced users to help determine why certain errors are occurring. Most users won’t need to worry about this section, but you may need to access it while receiving tech support.

Resource Monitor is like the Task Manager on steroids…it’s a great tool to monitor what apps and services are using up your system’s memory, processor, disk usage, and network activity. If you find a service or program that is frozen or taking up too many resources you can close it out.

A very handy tool that is not well known about is the ability to generate a system health report.

Wait while an analysis takes place and the information is collected…

The report takes about a minute to create and then you can go through a very detailed analysis of virtually every aspect of your system.

You can also export the report to HTML format so you can share or save the report for future comparisons and troubleshooting.

    If you’re experiencing problems with your Windows 7 machine, using the included advanced system tools can help a lot, without the need for installing 3rd party utilities.

fireofhercuntorder's picture

dear NIR, this might be also helpful for all your slsk program builts on all OS:
http://en.wikipedia.org/wiki/Data_Execution_Prevention

Data Execution Prevention
{From Wikipedia, the free encyclopedia}
Data Execution Prevention (DEP) is a security feature included in modern operating systems. It is known to be available in Linux, Mac OS X, iOS, Microsoft Windows and Android operating systems and is intended to prevent an application or service from executing code from a non-executable memory region. This helps prevent certain exploits that store code via a buffer overflow, for example. DEP runs in two modes: hardware-enforced DEP for CPUs that can mark memory pages as nonexecutable, and software-enforced DEP with limited protection for CPUs that do not have hardware support. Software-enforced DEP does not protect against execution of code in data pages, but instead counters SEH overwrite, another type of attack.
DEP was introduced on Linux in 2004 (kernel 2.6.8), on Windows in 2004 with Windows XP Service Pack 2,while Apple introduced DEP when they moved to x86 in 2006.

Hardware enforcement
Hardware-enforced DEP enables the NX bit on compatible CPUs, through the automatic use of PAE kernel in 32-bit Windows and the native support on 64-bit kernels. Windows Vista DEP works by marking certain parts of memory as being intended to hold only data, which the NX or XD bit enabled processor then understands as non-executable. This helps prevent buffer overflow attacks from succeeding. In Windows, from version Vista, whether DEP is enabled or disabled for a particular process can be viewed on the Processes tab in the Windows Task Manager.
In some instances, enabling Data Execution Prevention can have the unintended consequence of preventing legitimate software from executing, typically exposing a hitherto unknown bug in the process. In these cases, the affected software needs to be remediated by its developer; in the short term it can be flagged as being allowed to execute code in those parts of memory, but this itself leads to a possible attack if the application isn't rigorous in validating data that is passed into a region of memory that is marked as being executable.
Microsoft Windows
If the x86 processor supports this feature in hardware, and if the system's BIOS provides support for this feature and it has been enabled, either by the manufacturer or the user,[4] then the NX features are turned on in Windows, on a limited "OptIn" basis.[5] This setting provides protection only for a limited set of Windows system and binary files. To achieve full protection, the user must choose either "OptOut", otherwise known as "turn on DEP for all program services except those I select" function: covering all programs and processes not specifically exempted, or "AlwaysOn", covering all without exemptions selected. These are configurable through the System Properties interface.[6] If the feature is not supported by the x86 processor, then no protection is given. Outside of the x86 architecture, a version of NX also exists for Intel's IA-64 architecture that is supported by Windows.
Software enforcement
Software DEP, while unrelated to the NX bit, is what Microsoft calls their enforcement of "Safe Structured Exception Handling". Software DEP/SafeSEH simply checks when an exception is raised to make sure that the exception is registered in a function table for the application, and requires the program to be built with it. However, even though it creates an impression that software DEP is related to the prevention of executing code in data pages, it is a different form of protection.

Issues

Limitations
DEP provides some protection against attacks, but of course is not sufficient to protect against all forms of attack. Other security features such as address space layout randomization, structured exception handler overwrite protection (SEHOP) and Mandatory Integrity Control, can be used in conjunction with DEP.
Where code is executed at runtime—a JIT compiler is a prominent example—the compiler can potentially be used to produce exploit code (e.g. using JIT Spray) that has been flagged for execution and therefore would not be trapped by DEP.
Compatibility
DEP occasionally highlights software problems, usually with older software that was not compiled and tested to take advantage of the feature. Users have experienced problems using various command line commands that are a part of Microsoft's Services for Unix, which is included as part of Vista as well as Windows Server 2003 R2.[citation needed]
These problems may be masked by disabling DEP, but at the risk of increasing exposure of the system to malware. DEP can be turned off on a per-application basis, or turned off entirely for all non-essential Windows programs and services.Microsoft recommends that DEP not be globally disabled where an application crashes due to a DEP error. Instead, the author or vendor of the offending software should firstly be contacted for an updated version that does not violate DEP, or failing that, that DEP be disabled on an exception basis for the offending application only.
DEP is applied to an entire process, so even if an application runs perfectly with DEP, it may need to be disabled if a non-DEP compliant extension is added that runs in the same process space. For example, DEP-related problems can occasionally occur with DEP-compliant core operating system components such as Windows Explorer, Internet Explorer and Windows Installer as they support in-process third party extensions or plugins that may not be DEP-compliant.

See also

NX bit – list of names of similar techniques used in other operating systems
Executable space protection
Buffer overflow
Heap overflow
Stack buffer overflow
Stack-smashing protection

Thank You Everyone for lookin.

thescarletfire's picture

Wow. I'm a hacking group? Interesting.

I'm running the 2013.7.10 build on a Windows 2003 server. I am finding that after just an hour or so the UI becomes unresponsive.

I can see in the task manager that the memory and CPU usage is going up and down and I can see network traffic going in and out. But the UI of the client stays black and you get the "window trail" if you move the task manager around in front of the client.

That said, I have experienced this on all versions of the client, but more so on this version.

Is there anything I can do to optimise the client to improve the UI? I have tried restricting up and download slot numbers and available bandwidth, but nothing seems to make any improvement.

Any help would be appreciated.

Hey Gadget,

7.10 had a lot of problems. Try the latest build on the download page.

Thanks, Nir

can we have a portable version, or atleast all data files stored in program root, atm im using hardlinks and jlinks to relocate the data into the progfolder