Hi, We are using Wireshark 1.0.1, customized RADIUS dissector to suit our requirements. We developed this on RHEL4.7, few years back for one of our clients. Currently we are moving on to RHEL 6.1 64 bit OS with the same source code and when we try to run our wireshark, it opens up good and when we try to load a capture file, it crashes. As per our requirements, we cant directly move on to latest version of Wireshark before solving this issue with v1.0.1.
When I try to debug using gdb, these are the logs that i see,
and the list of Missing separate debuginfos goes on. When i back traced the stack, here is what i see,
Linux Server Details:
Wireshark Details:
Any information in this regard would be greatly helpful to us. ldd strace output: http://pastebin.com/jDbwwkf9 Thanks, Purandhar K asked 08 Aug ‘13, 00:39 Purandhar K edited 08 Aug ‘13, 15:34 Guy Harris ♦♦ |
2 Answers:
This looks similar to the crash reported in bug 7978. That was fixed in r46066 by taking out a 'return' from within a TRY/CATCH/ENTRY block. Is it possible your modifications have introduced such a return? answered 08 Aug '13, 06:05 JeffMorriss ♦ Hi Jeff, Thanks for your reply. Tried debug the issue using eclipse and also with gdb, didnt give me any useful information on the crash. (may be i am missing something in them). I tried with Valgrid and it took me through to the issue directly. The issues were,
Now that wireshark with my customized Radius dissector can load the capture files, i will dig in to see the actual reason for crash. I will keep your comments in mind while doing it. thanks again! -Purandhar (08 Aug '13, 22:55) Purandhar K
In C and C++, an "undeclared variable" is a compile-time error, not a crash (a crash is a run-time error); is your dissector written in C (or C++), or in Lua? (08 Aug '13, 23:58) Guy Harris ♦♦ Hi Guy, I have customized the default Radius dissector in C, extended it to dissect custom AVPs in Radius packets. My bad (tired eyes), its 'Conditional jump or move depends on uninitialised value(s)' and not undeclared. -Purandhar (09 Aug '13, 01:55) Purandhar K
That change does not look correct to me. You may have band-aided the problem to avoid the crash but it's likely the functionality will not be correct with such a change. But anyway if you can "fix" the crash like and thus be allowed to upgrade to an at least half-modern version, hopefully the crash will just be fixed in the newer version. (09 Aug '13, 07:11) JeffMorriss ♦ Thats the plan, quick fix the issues and move on to the latest wireshark version, 1.10.1 as soon as possible :) . However, i will keep looking for the root cause for the crash and will update here when i find it. (09 Aug '13, 07:24) Purandhar K Hi, I have been looking for the root cause for the issue mentioned in this ticket. The problem within the custom Radius dissector is resolved. I had to write up few lines of code as work around for 'Conditional jump or move depends on uninitialized value(s)'. Wireshark still crashes when i load a Radius capture file. I dont have any returns from TRY CATCH Blocks. Backtrace of the recent crash:
Your guidance would be of great help to me. I am still using wireshark-1.0.1 version, and can only move on to 1.10.1 after seeing the packets loaded on 1.0.1 :( Thanks! (27 Aug ‘13, 07:57) Purandhar K showing 5 of 6 show 1 more comments |
Issue has been resolved. problem was with one of the strcpy function, trying to copy a bigger string in to smaller one. Strange thing is same code runs well without crashing on RHEL4.7 32 bit. Anyway, thanks for your time and guidance. -Purandhar answered 12 Sep '13, 04:06 Purandhar K |
Does vanilla 1.01 work? It’s probably a waist of time trying to get the old director to work when you probably can get away with just adding a custom dictionary on the latest version possibly With vsa subdissectors.
Hi Anders,
Thanks for the information. I will have to get this v1.0.1 working for RHEL6 64 bit, which i am pretty close now, before moving on to latest wireshark-1.10.1. Please see my comments to Jeff.
-Purandhar