Is there a way to extract actual call stack addresses from a Windows Performance Recorder trace (WPR)? - wpr

According to https://randomascii.wordpress.com/2013/11/04/exporting-arbitrary-data-from-xperf-etl-files/, wpaexporter.exe should be the right tool to do so.
I manage to prepare a profile with the right data, but, unfortunately, wpaexporter keep trying to translate addresses, even if "-symbols" is not given to the command line, generating some useless
/<ModuleName.dll>!<Symbols disabled>
warnings.
This is annoying because part of our application use some Delphi code that can not generate symbols in a Microsoft compatible format. With addresses, we would be able to find the Delphi symbols in the call stack using map files.
Is there a way to extract call stack addresses from a wpr trace ?

Thanks, i completely missed processing options of xperf...
In the meantime, i found that LogParser (https://www.microsoft.com/en-us/download/details.aspx?id=24659) can also export an etl file to a csv (with actual values as well) :
LogParser.exe" "Select * from file.etl" -i:ETW -o:CSV -oTsFormat "HH:mm:ss.ln" > output_file.csv
From what i have seen so far, LogParser output might be more suitable for automatic parsing (only one line per event in the file, no header) while xperf output is more suitable for human processing (tabular representation).

Yes. You can also use xperf.exe. Have you tried the actions option?
xperf -a stack should help here I expect.
You can see detailed info with xperf -help processing command.

Related

Trying to read multiple lines from txt file separated with :, but I'm getting imbRecoverableException caught from worker -> parseNext

As I'm new to IBM MQ and IIB I'm trying to experiment around with online tutorials. At the moment I'm trying to make a simple app that reads several lines in txt file separated by colon and writes them into XML file. Currently I'm stuck at reading multiple lines from file. I know how to make it work with only one line, but can't with more than one. I do know that there should be a parent-child relationship between two complex types but can't configure them properly. Also im using RFHUtil to send message file into queue.
Since I can't find much googling it, I hope someone with right knowledge could help around.
Don't have any code, but got my message definition picture: http://prnt.sc/nv9npr
Here is the error I'm getting: http://prnt.sc/nv9nyi
So two things I can see in your current screen shots.
In the first screenshot I can see \r\n i.e. CRLF which indicates that your separator needs to either be CRLF or your model needs to deal with the CRLF.
In the second you've got a partially parsed message. Try setting the Advanced Parser options on your Input node to ParseComplete things will still blow up but you should get some better diagnostic information in the ExceptionList.
Looks like you are trying use the MRM parser which has been replaced by the DFDL parser. I suggest you find some tutorials on the DFDL parser, it's much more efficient. Also there is support built into the Toolkit which will let you debug the Message Model you create Testing a DFDL schema by parsing test input data

Block for serial output in GNURadio/GRC

I am working on a project that involves GNU Radio/GRC and am not very familiar with the software. I am trying to output data to a serial port in GNU Radio using a block, but have not found a way to do so.
I was wondering if there is a pre-defined block that I can use to put this information to a serial port (USB on a Raspberry Pi 3), or if I had to create my own block. And if I had to create my own block, what that code would look like.
I have been able to write the data to a file using the File Sink to make sure I was getting data, and was wondering if the fix is something as simple as changing the File sink to an serial port sink. See picture below:
http://imgur.com/a/BdaMZ
I also did some research and found a github repo that looks like what I need -- unfortunately, the repository that it links to is no longer there. It did mention using pyserial, which is what I believe is meant for creating my own block in python. The link to this repo is below:
https://github.com/jmalsbury/gr-pyserial
… was wondering if the fix is something as simple as changing the File sink to an serial port sink.
Yes! Or No, it's even easier:
So, in fact, you could even simply use your file sink to write to e.g. /dev/ttyS0 (or /dev/ttyUSB0, or whatever is the device name of your serial port), but you'd have to set up the serial port to work like you want it to separately first. A way of doing that would be using stty, e.g.
stty -F /dev/ttyS0 115200
prior to running your flow graph.
Note that practically all in your flow graph point points to you not being sufficiently proficient with GNU Radio to successfully exchange data. I can't cover everything here, please read the official Guided Tutorials, but:
In a flow graph like yours, where the IO is the inherently rate-limiting element, you must not use "Throttle". Throttle is really just a tool to avoid a flowgraph consuming all your CPU (and to slow down simulations)
Giving your files a .grc ending is bad practice, as that is the ending reserved for GNU Radio flow graphs.
Giving it a .txt ending is plain misleading, since there's no text involved whatsoever. The "file format" (I wouldn't even call it a format) is really just plain binary numbers, as your computer handles them; not decimal ASCII representations of these floating point binary numbers
I also did some research and found a github repo that looks like what I need -- unfortunately, the repository that it links to is no longer there. It did mention using pyserial, which is what I believe is meant for creating my own block in python. The link to this repo is below:
Don't know what you're referring to, https://github.com/jmalsbury/gr-pyserial is perfectly existing!

Convenient diff of patch files in Gerrit

My team using Gerrit for reviewing of changes and sometimes we have to push .patch for some files. Sometimes these .patches could reach over ~1000 lines (which obviously not good for reviewing). It is very inconvenient to review it as diff between patches itself. It would be better(in some cases) to review it as diff of origin file and origin file with applied patch(not diff between .patches). Even if original file isn't under version control, committer could attach it with patch set, right?
Unfortunately, after lasting googling i didn't find anything...
Is there any way to show diff between two patch files (not patch sets) in such approach or similar?
I think the best you can do is to find a three-way merge tool to compare
the original source;
the source with the old patch; and
the source with the new patch.
To use such a tool, I think you'd need to use the command lines the Gerrit interface provides to fetch the changes locally, then apply the patches, then use the merge tool for the review.
I don't think you'll find a way to get a "three-way merge" view of the code in the Gerrit UI itself.

Oracle Report layout issue?

I am a novice user of Oracle Report Builder, so forgive me if the answer should be obvious.
I am attempting to run a 9i report, and I keep getting an error that appears like there is an issue with frames overlapping. I have two versions and both are getting the same error. One version is the report I want. The other is a stripped down version with only a couple fields, to narrow down what might be causing it.
Terminated with error: <br>REP-271187990: Virtual Memory System error. REP-0200: Cannot allocate enough memory. cavaa 22 REP-0002: Unable to retrieve a string from the Report Builder message file. REP-271187990:
Occasionally, it kicks out the message below when I try to run it, with no other accompanying details. The select runs and returns the desired results, and the function returns the ref cursor results as expected. The package is valid and compiled, so the query itself should be fine. There is only one query in the report, and I have tried various things, including stripping the report to narrow down the source of the error, with no luck. Any ideas to try would be appreciated.
Terminated with error: <br>REP-1401: 'qr_1refcurds1': Fatal PL/SQL error occurred.
It turns out that the problem was with data returned from my refcursor.
In the package spec I had one of the fields wrong field in the table.field%type declaration.
For those experiencing a similar error I would suggest:
If you have your SQL in functions, as opposed to right in the report, check your package spec to ensure your field order matches usage in the body.
If you have any overlapping frames in your report, this message can also come up. Check the object navigator for any hidden frames. They can be totally invisible, and the only way to know for sure is by checking in the navigator. Hint - Give meaningful names to your fields and text labels, so you can see what's contained in each frame. Also check the source of container frames is... but that's another REP error to enjoy.
Depending on setup, the first time you load a report it may error out referring to one of your queries. That happens after compile. Just try again, and every time going forward it's fine.
Consider the server patches mentioned above if your SQL statements are dynamic.
Feel free to add to this list if you know of others.
According to Oracle Support Note 430044.1 -
MS Windows: Reports 10g with Ref Cursors Fails with REP-200 and REP-65
Virtual Memory System Error [ID 430044.1]
This is a known Oracle Reports bug for MS Windows Platform.
Bug 5584001 DYNAMIC REF CURSORS DON'T WORK IN VERSION 10.1.2.0.2
REPORTS BUILDER
There are step by step instructions in the Oracle Note to apply the patch to resolve this issue. Also note, this problem is specific to MS Windows.
The suggested Oracle One-off patches are-
One-off patch 4505133
One-off patch 5634746
Log-on to Oracle Support, download the two patches and follow the step by step instructions mentioned in Note 430044.1 to apply the patch.

How to query the containing partition of a file with KDE/Qt4?

I'm using KDE, and I'm toying with the idea of hacking the code for Dolphin File Manager (and potentially Konqueror if necessary) to get context-sensitive drag and drop behaviour (i.e. files are moved within the same partition, or copied if they're moved across partitions or the source is read only).
To do this, I think I'd need to find out the containing partition of the source and destination (easy enough on Windows using the drive letter, but on Linux, as mount points can be almost anywhere, it can't be reliably derived from the file path), and compare them.
Does anyone know how I can find out the partition that contains a given file?
It must be possible - I know Nautilus provides this sort of behaviour, but I'm not familiar enough with GTK to track down the appropriate section in the source code to see how its done...
Qt doesn't provide API for this. For POSIX, have a look at stat.
For KDE, you can use KIO::stat() to get mostly the same info as POSIX' stat function but asynchronously.
The device id should be in the field UDS_DEVICE_ID of the result.

Resources