IRC Log Viewer » #firebreath » 2011-10-10

IRC Nick Time (GMT-7) Message
nirvdrum 08:10 Today I finally upgrade my copy of firebreath.
I suspect this will not be that much fun.
linearray 08:10 the git pull part is easy!
nirvdrum 08:10 Heh.
linearray 08:10 I just generated a new project and pasted all my code in
granted, it was a simple project :)
nirvdrum 08:10 Yeah. I'll do that.
It looks like it's mostly cmake changes.
This is what I get for not keeping up.
I'm still on some 1.4.0 RC.
linearray 09:10 ohai
taxilian 09:10 g'morning
nirvdrum: long time no see; how're things going?
nirvdrum 09:10 I've been quite busy, but doing well. How about yourself?
taxilian 09:10 not bad at all
nirvdrum 09:10 I see the project is making great strides.
taxilian 09:10 except that I'm about two months late on delivering 1.6
nirvdrum 09:10 I've been lurking, but I haven't had the need to upgrade.
taxilian 09:10 it's worth upgrading
1.4 is definitely old-hat now =]
nirvdrum 09:10 Now my plugin is causing Chrome 14 to crash (13 was fine), so I figured there was some cross-thread call item that had been fixed.
BTW, I love the release logs that link to the JIRA issues.
taxilian 09:10 yeah, it takes a bit more work, but it makes it a lot easier to keep track of what happened
paritcularly since the jira issues have references to the source code changes
nirvdrum 09:10 JIRA will generate an HTML release notes for you. You should be able to mostly cut and paste that into Confluence.
There's some sort of cross-product link thing they have, too. But I haven't used that in a while.
It looks like the PluginAPI class has changed quite a bit. I'm manually merging that right now.
taxilian 09:10 yeah, I've tried the jira release notes… just not quite what I need, but it still helps
nirvdrum 09:10 MogotestPluginAPI.cpp.
The generated project file.
taxilian 09:10 ahh
hmm. I don't remember any significant changes
then again, 1.4.0 rc was a long time ago =]
nirvdrum 09:10 My old one has a single arg constructor, passing a FB::BrowserHostPtr.
This has a new pointer type and a reference to the plugin itself.
Which is nice because I used to have to manage the plugin handle myself, which was tricky due to instantiation times.
Yeah. I was running some version from back in December :-P
But, it was working and I don't like to mess with things that are working.
taxilian 09:10 =] fair enough
the plugin reference is nothing magical, btw; it's still you managing it, it's just now it uses a weak_ptr in the default implementation
nirvdrum 09:10 Ahh. Good to know.
taxilian 09:10 but that's still all in your code
nirvdrum 09:10 I used to have: void MogotestPluginAPI::setPlugin(boost::shared_ptr<MogotestPlugin> plugin)
taxilian 09:10 you don't have to pass anything in the constructor if you don't want to, or you can pass more. none of that is linked to anything in FireBreath itself, it's all just hooked up in the code that is generated
that would work too, but you'd want it to be a weak_ptr when it is saved
and it would be the same thing
nirvdrum 09:10 The generated doxygen (?) comments are really nice now, too.
taxilian 09:10 why thanks
to make them work I ended up writing a python script to parse through all of them and change all the links so they'd work on confluence
and then add pages for all of them to confluence that reference the doxygen html files on a different server
ti's a bit of a hack =]
nirvdrum 09:10 That was pretty nice. On Confluence the orange is a bit hard to read though. It's too dark for the code segments.
taxilian 09:10 feel free to fix it and send me a patch ;-)
nirvdrum 09:10 Heh.
One thing at a time :-)
But I'm not against it obviously.
taxilian 09:10 =]
I know you aren't, and I appreciate it. I'm much happier to help the people who I know help in return when they are able
and you have done more than most
nirvdrum 09:10 One unrelated question: do you have any plugins that report back their version? I wanted a way to get the version through JS. I added a method to return a string, but I'm forever forgetting to keep that and the project def file in sync.
taxilian 09:10 I usually use FBSTRING_PLUGIN_VERSION
nirvdrum 09:10 Can that be referenced from within code?
Or do you just have a python job substitute?
taxilian 09:10 then I pass in a version number on the command line
#include "config.h"
!findfile config.h
FireBreathBot 09:10 Found 9 matching file(s) in the master branch. First 5 are:
nirvdrum 09:10 Cool. I'll check that out.
FireBreathBot 09:10 gen_templates/config.h
nirvdrum 09:10 Ever helpful as usual. Thanks.
taxilian 09:10 lol. huh. too many of those
!findfile templates/config.h
FireBreathBot 09:10 Found 1 matching file(s) in the master branch. First 1 are:
taxilian 09:10 oh; that is actually #include "global/config.h"
I usually pass the version number in as a cmake option from the build server so that it includes the build number
FireBreath pretty much expects that the version string will be
and it has defines that break those down if that is the case
nirvdrum 09:10 Where do you get the build number from? Usually that comes from a CI server.
Hey, if I get this working, I guess I have a new fbgen patch. The default get_version() implementation just does a: return "CURRENT_VERSION";
taxilian 09:10 well, in FireBreath I get it from the last part of the version string. In normal cases I pass it in on the command line from Jenkins
yeah, that's something that I've been meaning to change for awhile
initially I was trying to let everyone version it however they wanted
but it turns out that the wix install generator doesn't work if it's a format other than x.x.x.x
if you're fixing that, maybe you could fix FIREBREATH-121 while you're at it
FireBreathBot 09:10 FIREBREATH-121: Summary: Plugin version number
FIREBREATH-121: Assigned To: richard
FIREBREATH-121: Priority: Minor, Status: Open,
taxilian 09:10 it shouldn't be hard, I just haven't gotten to it
hey, someone give me another +1 on so I get the bounty even if this guy doesn't choose to award it :-P
kylehuff 09:10 you think that is something that should be added to the Tips and Tricks? (using FBSTRING_PLUGIN_VERSION in your plugin)
taxilian 09:10 kylehuff: probably it should just be made obvious as much as possible, but yeah it might make sense to put it there as well
kylehuff 09:10 (1plused)
taxilian 09:10 =] thx
kylehuff 09:10 well, I'm all for making it obvious, but I'm not sure how to do that
nirvdrum 09:10 I'll take a look.
I haven't bothered with the WiX stuff yet. MSIs are nice, but NSIS is much easier for what I need to do.
taxilian 09:10 I think Kevin's suggestion to make returning FBSTRING_PLUGIN_VERSION is a good first step. if we fix issue 121 so that it goes into the .rc file by default that'll help as well
kylehuff 09:10 gotcha
taxilian 09:10 heh. sorry, I forget that you may not all know each other
I know who you all are :-P
nirvdrum 09:10 My handle isn't as obvious as kylehuff's. Although maybe his name is David and I'm just a fool.
taxilian 09:10 heheh. I'm pretty sure his name is actually Kyle :-P
kylehuff 09:10 haha, no, but that'd be funny.
taxilian 09:10 at this point if I changed my nick nobody would know who I was
which is funny because taxilian is a pseudonym that I created for a play-by-email RPG about 12 years ago
kylehuff 09:10 except, you are mostly the only one who answers questions here, so, we would figure it out quick..
taxilian 09:10 lol. true
nirvdrum 09:10 taxilian: Similar boat here. For years I tried to keep nirvdrum separate from my actual persona. But then I accumulated too many OSS contributions as nirvdrum.
It became advantageous to just combine the two. Created a lot less headache, too.
taxilian 09:10 hehe. yeah; judging by the amount of contract work I've taken (which is not as much as has been offered) I think my decision to use my real name and link it clearly to my handle is a good one.
btw, if anyone has a minute, I'm really at a loss on FIREBREATH-131
FireBreathBot 09:10 FIREBREATH-131: Summary: Tutorial Screencasts not working
FIREBREATH-131: Assigned To: richard
FIREBREATH-131: Priority: Major, Status: Open,
kylehuff 09:10 yeah, same here. I decided that my contributions to open source works as a running resume, regardless of my current job in the IT field, and it would be wise to just use the same name everwhere. it has worked out well, until I decided to ditch IT and go Combat Arms... lol
nirvdrum 09:10 Any suggestions on what I may have done wrong here? Opening my sln file yields:
linearray 09:10 what about -131?
taxilian 09:10 linearray: I simply don't know why it's happening
linearray 09:10 you know it's shockwave, right?
taxilian 09:10 nirvdrum: try blowing away your build dir and rebuilding?
linearray: yeah, I know it's flash… but it seems like it stopped working when I upgraded confluence
literally it doesn't work on Chrome or Safari, at *least* on Mac
nirvdrum 09:10 taxilian: I did. That's rebuilt with prep2010.cmd
taxilian 09:10 nirvdrum: hmm. what version of vs?
and what version of cmake?
nirvdrum 09:10 2010 Ultimate SP 1
linearray 09:10 ah ok, I mistook it for "shockwave"
kylehuff 09:10 the videos work on Chromium (v13, I think?) but not on Chrome Beta v15
nirvdrum 09:10 cmake 2.8.2
Video works in Opera.
taxilian 09:10 kylehuff: yeah, don't work in chrome on windows either
current release ver
nirvdrum: you could try updating cmake; that's what I'd try first
nirvdrum 09:10 Will do. Thanks.
kylehuff 09:10 works on 13.0.782.215 (Developer Build 97094 Linux)
nirvdrum 09:10 taxilian: I'd just move the videos to vimeo and call it a day.
taxilian 09:10 nirvdrum: the problem is that those are .swf files, not .flvs
created with Jing, free version
nirvdrum 09:10 Can't save as .mov or .avi?
taxilian 09:10 not the free version, and I don't know of any way to convert them
nirvdrum 09:10 I think ffmpeg has a way to convert. But now it's a lot more work.
taxilian 09:10 I am guessing that confluence is generating the tag wrong; it worked in confluence 3.5
but when I upgraded to 4.0 it broke
If I knew what happened I might be able to either fix it or at least submit a bug report to atlassian
heh. just got an email from one of Amazon's recruiters
it might make sense to convert those to a normal video file, if there is a way
I just dont' have time to deal with it; I have today to work on FireBreath agian, and I'd really like to clean up the last few issues and get 1.6 out
linearray 09:10 hang on, I'll try to fix the video thing
taxilian 09:10 linearray: thanks, I really appreciate it
nirvdrum 09:10 linearray: I wonder if it has to do with the param tags not being closed. Seems unlikely, but could be worth trying.
kylehuff 09:10 oh good, linearray is on it! I was about to volunteer, and now I don't have to... I wouldn't know where to begin
taxilian 09:10 lol. you guys are awesome
now to set up a test environment with vs express...
nirvdrum 09:10 Well, now I feel foolish. New cmake did the trick.
taxilian 09:10 huh. must have been a cmake bug, then
nirvdrum 09:10 I merged and started over 3 times now.
taxilian 09:10 seems like I ran into that once, but haven't seen it in awhile
nirvdrum 09:10 I figured I just kept screwing something up.
BTW, git-extensions is great.
Makes working in VS with git so much nicer.
taxilian 09:10 nirvdrum: agreed; git-extensions is probably my favorite git gui so far
linearray 10:10 alright
here you go :)
(at least atlassian eats their own dog food)
taxilian 10:10 restarting....
linearray 10:10 approach B is probably simpler
taxilian 10:10 but approach A is less work
and it works
FireBreathBot 10:10 JIRA issue issue resolved by richard "It turned out that this was a bug in confluence. thanks for pointing it out!"
kylehuff 10:10 confirmed
linearray 10:10 yw
linearray 10:10 do I need to build boost before I generate the project with WITH_SYSTEM_BOOST=1 ?
taxilian 10:10 yes you do
linearray 10:10 cause I get weird linker errors... ok, I'll start there
taxilian 10:10 the linker errors are because if you haven't built system boost then you don't have the binaries to link to
linearray 10:10 I did run 'bjam'... maybe I need to fiddle with the arguments a bit
kylehuff 10:10 in a method that is within the scope myPluginAPI::myMethod(), any refernce to m_filesystemPath results in "not declared in this scope"... what am I missing?
taxilian 10:10 the fact that m_filesystemPath is on the PluginCore object, not the JSAPI object
kylehuff 10:10 ah, that would explain it!
taxilian 10:10 I thought so =]
kylehuff 11:10 so, I am on a quest to make a plugin bundled in a firefox extension somewhat secured, and was hoping for comment. I am pondering having my plugin to only load if 1.) the url matches the host protocol "chrome://" or "chrome-extension://{myextension-path}", and 2.) the plugin .so/.dll/.plugin file is loaded from the extension path, "...{myextension-path}/plugins/myPlugin..." (in reality, it would load regardless, but only perform "read-only
... non-sensitive operations if those tests failed)
linearray 11:10 what does it do?
so I can get an idea of the security needs
kylehuff 11:10 proves browser access to a users GnuPG/PGP keyring
taxilian 11:10 kylehuff: well, I would say that if someone has access to somehow put another plugin in front of yours or otherwise access the filesystem or path then security is shot already, so I'm not sure I'd worry about the location of the dll
kylehuff 11:10 with chrome, it is a non-issue, bundled plugins have the ability to be set only for the bundling extensions use, no other page or extension can load it
taxilian: agreed, I was merely thinking that the path is only important to check, so another extension couldn't access the methods.
taxilian 11:10 ahh, yeah, I guess that makes sense
kylehuff 11:10 I'm glad you understood that very poorly worded statement... lol
taxilian 11:10 I guess what you could do if you really wanted to be secure is check the path, and then actually step up into the extension and verify that the extension is the one you think it is
check manifest files, code signatures, etc
I don't have any code to do that for you this time, though…. :-P
kylehuff 11:10 hmmm... there's an idea. In most cases, if the user is installing malicious extensions or has an otherwise compromised extension, their private keys are probably already compromised. I would just like to prevent 1.) Websites from loading the plugin and doing things like, deleting keys, and 2.) another extension from loading a plugin in its place in an attempt to steal information.
taxilian 11:10 1) can easily be prevented by verifying the chrome:// url; that's a very good idea
2) I think you'd need to somehow verify that the "chrome" page was being loaded from the right extension
kylehuff 11:10 oh, yeah, that's true...
linearray 11:10 hmm, confluence 4 has no wiki markup editor anymore
taxilian 11:10 yeah; not sure I like that
they have reasons, but I still don't think I like it
linearray 11:10 i'll manage
taxilian 11:10 have to admit, it is nice to have the website be so much faster
and that's the result of the change they made that removed the markup editor
linearray 11:10 is it? ;)
hm, you're right
maybe one day they will not collapse the sidebar menu on every click, then everything is perfect
taxilian 11:10 heh
would be nice
I'm sure I could fix a lot of that, if I took the time to customize it
but that just doesn't feel like the best use of my time
linearray 11:10 I took a look at the source code once, but TBH it felt a bit overwhelming
taxilian 11:10 yeah; I actually have a lot of background in web programming, so I'm sure I could figure it out, but... — I love how they sound like this is surprising
FireBreathBot 11:10 UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 213: ordinal not in range(128) (file "/home/richard/phenny/", line 186, in call)
taxilian 11:10 lol
that's amusing
linearray 11:10 I quasi-quit both ;)
taxilian 11:10 hehe. well, I used to work for Facebook; they are both usefulish, but only to an extent, IMO
linearray 11:10 I just don't like to carry the cookies around, that's all
taxilian 11:10 the thing is that google+ just doens't have enough "wow, that's so much better!" moments to overcome the inertia… yet, anyway
linearray 12:10 To ease working with the Boost libraries FireBreath already provides vs. using Boost libraries on your system, FireBreath provides the CMake macro add_boost_library().
what does that mean?
taxilian 12:10 it means that the cmake macro add_boost_library will work in either configuration
linearray 12:10 very good
taxilian 12:10 instead of doing it in a way that works only in one case or the other
linearray 12:10 the example is 'thread'
isn't that already included somewhere?
taxilian 12:10 yeah
it's required by FireBreath core
linearray 12:10 I'll change it to filesystem then
taxilian 12:10 okay
I have seriously considered adding a dependency on filesystem; it would allow me to add several nice features
but maybe I'll put those in a firebreath library instead
linearray 12:10 filesystem is awesome, but I still had to hack my own homedir detection :)
interestingly filesystem does have a tempdir detection.
taxilian 12:10 !find SystemHelpers.h
FireBreathBot 12:10 Could not find any tags matching SystemHelpers.h
taxilian 12:10 !findfile SystemHelpers.h
FireBreathBot 12:10 Found 1 matching file(s) in the master branch. First 1 are:
linearray 12:10 nooo
taxilian 12:10 hehe. no worries, I added that last week
or maybe the week before
it hasn't been there long
and there isn't an implementation for linux yet
so feel free to add that in
linearray 12:10 hmm, I can take a look, but I *think* it should be identical to OS X
taxilian 12:10 not in this case
I'm using different APIs
Mac specific ones
someone-noone 12:10 hello
what's up?
taxilian 12:10 hey, long time no see
I'm on a call right now
someone-noone 12:10 did you hear about that Metro IE 10 will not support plugins?
taxilian 12:10 desktop ie 10 still does
someone-noone 12:10 did you hear argumentation? it's funny
there is nothing that can
there is nothing that can't be done with html5. And plugins uses lot of computer's resources
Sounds like: "The only plugin that i know is Flash"
linearray 12:10 I only looked at metro briefly
not sure what to think of it
classic desktop looks almost exactly like win7
but I'm fairly certain they will screw it up one way or another
VJ 13:10 Hi anyone there?
taxilian 13:10 nope
VJ 13:10 I have a query. FB plugin creates a different process for the different browser on the same machine?
taxilian 13:10 I'm on a call and probably unavailable for an hour or so; can someone else please help him?
linearray 13:10 yes
and yes.
browsers don't know anything about each other
VJ 13:10 so if I am running the plugin on firefox and IE, Chrome plugin will create 3 different process, right?
linearray 13:10 yes
VJ 13:10 ok cool
In case if I want to initialize some values from the disk into the memory, what is the right place to do so? StaticInitialize() or at the API class level
I mean at the JSAPI
I am stuck :(
linearray 13:10 hmm
!wiki globalPluginInitialize
FireBreathBot 13:10 3 results found. Note: Results limited to 8
"class FB FactoryBase globalPluginInitialize":
"Plugin Lifecycle":
"Version History":
linearray 13:10 did you try StaticInitialize()?
VJ_ 13:10 No
linearray 13:10 looks about correct. see if it works :)
I don't really know
VJ_ 13:10 If some object is initialized in StaticInitialize() function, which is later used to write to the disk. What will happen if multiple processes are running?
It's might lead to race condition?
linearray 13:10 if you write to the same file, sure
there is a page for things like that:
VJ_ 13:10 Is there any way in FB to handle it?
I think I saiw lock() method
anyone there?
linearray 13:10 !wiki lock
FireBreathBot 13:10 8 results found. Note: Results limited to 8
"Message Diagram 1":
"Re: Debugging Plugins":
"FireBreath 1.5.2 Released!":
"FireBreathPlugin Class Diagram":
"CRC UML Diagram for ICES":
"FireBreath Plugin Class Diagram":
taxilian 13:10 VJ_: there is no cross-process synchonization in FireBreath
VJ_ 13:10 Ok
taxilian 13:10 all instances of the plugin in a single browser are the same process, however
so you only get multiple processes if there are multiple browsers using the plugin at the same time (firefox and chrome, for example)
VJ_ 13:10 ok
all the instances will have access to the object initialized in the StaticInitialize() method for the same browser
taxilian 13:10 correct
and all methods will be on the same thread unless you start another thread
in which case all bets are off and you can take care of yourself ;-)
VJ_ 13:10 Ok, I have no plans of starting another thread. Just worried about the race condition
where plugin is being used on multiple browsers simutaneously
not sure how to handle it
taxilian 13:10 always the fun decisions
you could look at boost::ipc; some people say that it doesn't work well on windows, but I haven't tried it
linearray 13:10 lock file?
VJ_ 13:10 The plugin is going to write to the file, and also delete one.
I guess the way plugin.lock() is being used
linearray 13:10 this looks pretty good actually
VJ_ 13:10 got it, thanks a lot
One more question, if there are two instances of the same browser, say firefox running then there will be two processes or one?
linearray 13:10 one
VJ_ 13:10 ok cool, thanks
linearray 13:10 when someone has a minute, I'd appreciate a pointer where to look for the problem here
because I have no idea what's going on
linearray 14:10 oh, i have a hunch
VJ_ 14:10 BTW I am not him, I am her :-)
linearray 14:10 hehe, got it
VJ_ 14:10 :-)
nirvdrum 14:10 I guess I need to track down a circular reference.
Has anyone else ever run into a failure on assert(weakHost.expired()); ?
What's the best way to get a handle to the NpapiBrowserHost instance?
Any way to get a log from the bot?
linearray 14:10 no, but from
nirvdrum 14:10 Thanks.
Apparently my buffer filled up.
Odd. Something taxilian_away mentioned doesn't jive with the fbgen project.
linearray 14:10 what is it?
nirvdrum 14:10 He said the constructor for the JSAPI object should take a weak pointer to the host, but it's generated with a shared pointer.
linearray 15:10 hmm
it's even a shared_ptr reference
which seems crazy, but I'm sure it
it's in fact brilliant
oh, because it's copied on the same line into a member.
nirvdrum 15:10 Sweet. Got it working. And firebreath helped me detect a memory leak I didn't even know I had.
linearray 15:10 grats
nirvdrum 15:10 Thanks.
This was far less painful than the pre-1.4 upgrade.
FireBreathBot 16:10 Commit 18fc1d2 on master by Kevin Menard: "Return a sensible version for get_version()."
FireBreathBot 16:10 Commit e9ab812 on master by Kevin Menard: "Fixed FIREBREATH-121: Plugin version number"
JIRA issue issue closed by nirvdrum "This should be all set now. If I messed it up, please reopen the issue. But it was working fine..."
taxilian 16:10 nirvdrum: it doesn't matter if the contructor takes a weak or shared, as long as it stores it as a weak
my internet connection is out; it must be a bad one, comcast has never gone down on me like this before
hope it's back up soon; I'm tethering via my cell =]
nirvdrum 16:10 Heh. Sorry. It's been a long time since I've really done C++.
My footing is a bit shaky.
kylehuff 16:10 weird... my plugin runs fine in Firefox 7.0.1 on ubuntu when installed in ~/.mozilla/plugins, but not when bundled inside the XPI...
kylehuff 16:10 the only message I see (that may or may-no be related) is: Native module at path '..<valid path that file exists at>../' doesn't export symbol `NSModule`
taxilian 16:10 NSModule? huh
kylehuff 16:10 yeah, but if I throw the plugin into my plugins dir, it loads just fine. I get that when it is bundled in an XPI (with the unpack flag set to true)
taxilian 16:10 very weird
I don't know
kylehuff 17:10 looks like it may be an issue specific to ff v7, as it works fine in v3.6.22
taxilian 17:10 nirvdrum: it looks good to me
taxilian 17:10 wow… comcast is out for pretty much my entire city
kylehuff 17:10 that is impressive. comcast is usually rock solid. I can't say I've every had an outage that laster longer than 5 minutes
nirvdrum 18:10 That is the first time I've ever heard someone commend Comcast.
taxilian 18:10 comcast internet for me has been really good
I'm guessing someone hit a box or something
taxilian 18:10 I am actually giving some considerable thought to the idea of moving to be hosted at my house, on my comcast business class line
dougma 18:10 osx people: is it safe to runModal an NSSavePanel from a background thread?
taxilian 18:10 well, it works for me =]
dougma 18:10 ok. so my Safari crash is something else. :)
taxilian 18:10 well, probably
but who knows?
dougma 18:10 eliminating...
taxilian 18:10 dougma: do you use vs express at all?
dougma 18:10 never used it
taxilian 18:10 ahh, well
there is a weird vs express bug that is the main thing keeping me from releasing 1.6
I'm working on setting up a test environment
dougma 18:10 is the issue in jira?
taxilian 18:10 FIREBREATH-116
FireBreathBot 18:10 FIREBREATH-116: Summary: Call to DllRegisterServer failed
FIREBREATH-116: Assigned To: richard
FIREBREATH-116: Priority: Major, Status: Open,
dougma 18:10 the reported never attached the .rc file?
taxilian 18:10 kylehuff was agle to reproduce it with a freshly generated project
dougma 19:10 i vaguely remember... did he paste it somewhere?
but that's an access denied error...
taxilian 19:10 that would cause this
the full error doesn't make it out to the result code
dougma 19:10 but yes, i don't get them
taxilian 19:10 I think it's going to be one of a couple of things
wondering if for some reason even if we redirect the HKLM registry it still fails for some reason when the user doesn't have access to HKLM
which would explain why it doesn't work on express, but does on 2008 and later; the newer versions don't have to redirect
dougma 19:10 i thought reg redirection was automatic... or does the atl code fiddle with that?
taxilian 19:10 newer ATL you can tell it to go to HKCU or HKLM w/ the COM registration; the older ATL you couldn't
so we had to do it ourselves by redirecting HKLM to HKCU
!findfile axutils
dougma 19:10 firebreathbot: wakeup
taxilian 19:10 huh.. wonder what is up with fbb
dougma 19:10 that's ok i ctrl-shift-f
taxilian 19:10 anyway, it's in there
dougma 19:10 hang 5, i need a coffee
taxilian 19:10 np, I'm busy fixing some breakage caused by nirvdrum's fix today ;-) (breaks if a plugin doesn't have all 4 digits defined)
nirvdrum 19:10 taxilian: Ahh. Sorry. I generated a new project to test it out.
taxilian 19:10 FBTestPlugin fails, ironically enugh
nirvdrum 19:10 Well, aren't I an asshole then. I didn't even realize there was a test suite to run :-/
Sorry. It seemed so simple.
taxilian 19:10 hehe
no worries
nirvdrum 19:10 taxilian: If you want to just revert it, I can take a look in more detail later.
taxilian 19:10 I think I can fix it relatively easily
nirvdrum 19:10 FYI, my upgrade seems to have gone well. After merging in the new code changes, I really only had one thing to fix. And really it was an issue before, but I didn't catch it. Firebreath caught it for me though.
I had an object with a reference to the m_host that I didn't delete when I was done with it.
Pretty slick how Firebreath caught it and warned me.
taxilian 19:10 hehe. some people swear at me when that assert hits
but it's the best way I know to failsafe that; it's the most common leak
either that or the plugincore object not getting freed, but in that case the plugincore object usually holds onto the browserhost anyway
so it's a good indicator of a problem
nirvdrum 19:10 I assume you know better than me, so if I hit an assert, I start looking at why.
In this case it was pretty silly.
I was caught up in the hoopla of smart pointers and forgot I had a dumb one hanging around.
taxilian 19:10 amazing how many people aren't willing to make that initial assumption =] but then, I just wrote the code, so what would I know, right? =]
nirvdrum 19:10 I didn't go back and verify, but adding in that one delete statement may have allowed me to work with Chrome in the older version of Firebreath. But I'm happy to be on the latest again.
taxilian 19:10 hehe. smart poitners are great, except that they are prone to circular reference issues
FireBreathBot 19:10 JIRA issue issue closed by richard
nirvdrum 19:10 In the last 48 hours I've programmed in Ruby, C++, and JavaScript. In the next 48 I'm likely to be in Java and Scala. Just about all of them have different memory management techniques. Kind of annoying to keep track of.
taxilian 19:10 lol
you should add Objective C just to round things out
nirvdrum 19:10 I haven't had to do that in a few years, thankfully.
taxilian 19:10 huh, well, I can definitely repro this issue
dougma 19:10 need bug reporters to provide atl version info
taxilian 19:10 well, it was vs express which means it was ddk
which means atl 7 or 7.1
before I try to step through everything I'm going to try a few things to see if I can "fix" it by tweaking the rgs file
yep, that's the problem
if I explicitely direct it to HKCU instead of HKCR it works
drat drat drat
that breaks several other things
taxilian 19:10 dougma: any idea how to get the log messages from ATLTRACE calls?
dougma 19:10 i think they go via OutputDebugString
so sysinternals debug viewer
taxilian 19:10 … so I was about to tell you that they don't because that would then go to the Output window in vs when attached
but they appear to be going there at the moment
which is bizarre because I've never seen them there before, and believe me — I've looked
so the problem is that HKCR/AppID registration calls are completely failing, and I don't have the slightest idea why
we're redirecting HKCR to HKCU/Software/Classes
dougma 20:10 i still don't get why we need to redirect them...
taxilian 20:10 because if we don't, it winds up trying to write to HKLM instead of HKCU
dougma 20:10 so what's wrong with explictly going to HKCU?
taxilian 20:10 mainly it causes problems for installers like WiX that call DllRegisterServer to find out what gets installed
they don't generate the correct registry keys
also it's harder them to switch it to be per-machine, which some people need
dougma 20:10 mmm mmm
i wrote my own wix to do what i needed and didn't use heat because ididn't trust it. :)
taxilian 20:10 I hope you didn't make it have the dll selfreg
dougma 20:10 no
but i need to have selfreg working for .cab install
taxilian 20:10 why? you can put a MSI in a cab
or so I'm told
dougma 20:10 oh really!
well i will look into that :)
taxilian 20:10 I'm really really strongly opposed to using selfreg for any real installation; I have been burned hard by doing so
dougma 20:10 .cab inf files are a dark place i'd rather avoid
taxilian 20:10 yeah
I don't support them
as a matter of course and principle
dougma 20:10 wise
taxilian 20:10 I have tried the route of making an installer for each browser; XPI on firefox, CAB on IE, etc
it caused more problems than it solved
now I just provide one download — an MSI file
dougma 20:10 yeah, windows users are well used to them now
taxilian 20:10 exactly
dougma 20:10 i am trying to talk people out of the cab :)
taxilian 20:10 hmm. I really don't like this. I really really really don't like this
I don't want to revert this back to accessing HKCU directly; if I do that, it's really hard to make it work on HKLM as well
dougma 20:10 option?
taxilian 20:10 hmm. no. I don't want to have to try to generate the code differently depending on what version they plan to use
and it's next to impossible to determine for sure what version of ATL they will be using before compile-time
this is just really infuriating; I don't know why the redirect wouldn't work
hmm. There isn't any way of rewriting the in-memory copy of a DLL's string resources, is there?
the .RGS file is embedded in the DLL; if I could preprocess it a bit more than ATL normally does, or override to a small extent ATL's default implementation...
I guess I could just say that per-user registration isn't supported in vs 2005 or vs express versions
seems a little harsh, though
dougma 20:10 the self reg entrypoint...
maybe you can override that
or *cough* patch it
taxilian 20:10 hehe
I can certainly override the self reg entrypoint, that's just in FireBreathWin.cpp
however, it calls into ATL
I'd rather not rewrite the whole thing...
taxilian 23:10 dougma: interesting thread here:!topic/microsoft.public.win32.programmer.ole/rf29c84y348
according to this, per-user COM is pretty much deprecated after vista
that explains a *lot*
like the fact that if you have roaming profiles enabled, you pretty much can't use per-user com
when the profile syncs it will lose your COM registry settings
more precise link:
hmm. this frightens me, but I think the only way to make this work is if I override HKLM as well
dougma 23:10 well that's all very confusing.
taxilian 23:10 yeah; it makes a bizarre sort of sense
but heavy on bizarre and light on sense
dougma 23:10 i'm just having trouble correlating it with my experience!
taxilian 23:10 that's because you're expecting consistency from windows
dougma 23:10 so my msi project works because i am registering under HKCR
although i do have some hkcu keys too
more testing required
taxilian 23:10 MSI does the handling for you of figuring out where to put it
dougma 23:10 finally, msi does something for me!
taxilian 23:10 that's another reason I don't want to put it under HKCU directly, because heat will figure out to put in HKCR correctly if I don't
heh =]
taxilian 23:10 hmm. I really don't know how I feel about doing a full redirection
I don't think there is another option
but it just seems… skary
FireBreathBot 23:10 Commit c7fc7cb on master by Richard: "Fixed bug w/ rc generation for small version numbers"
Commit 18fc1d2 on firebreath-1.6 by Kevin Menard: "Return a sensible version for get_version()."
Commit e9ab812 on firebreath-1.6 by Kevin Menard: "Fixed FIREBREATH-121: Plugin version number"
Commit c7fc7cb on firebreath-1.6 by Richard: "Fixed bug w/ rc generation for small version numbers"