Developer forums (C::B DEVELOPMENT STRICTLY!) > Plugins development

gtk_text_buffer_emit_insert: assertion `g_utf8_validate` on HelloWorld plugin

(1/2) > >>

Orione:
I'm trying to start plugin development and followed wiki for HelloWorld plugin.
It compiles fine but as I try to add the new plugin I get following error on the terminal:

(codeblocks:3285): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion `g_utf8_validate (text, len, NULL)' failed
Failed

I'm developing on Linux, installed wxWidget and Code::Blocks from sources as described on
http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_from_source_on_Linux

Output from "wx-config --libs":
-L/opt/wx/2.8/lib -pthread   -lwx_gtk2u-2.8

and the output from "wx-config --prefix" is in $LD_LIBRARY_PATH.

I read on a previous post that such error was solved by a user by linking to correct libraries, but I was not able to find how.

Hope someone can give me a hint.
Thanks!

Jenna:
Maybe this helps:
http://www.c-plusplus.de/forum/160326

If it happens in your plugin, it's not a C::B issue.

Orione:
Thanks for your hint, unfortunately it's not the case.

It's a new plugin, but anything is created automatically through Code::Blocks procedures.
Maybe I was not fully clear in my previous message, sorry about that:
- I start codeblocks compiled from sources.
- I create a new plugin project, named HelloWorld as detailed on wiki page
- I compile the plugin project anhat add it goes fine
- I try to "Install new" plugin in plugin manager and it fails with Gtk message

The only change I did to what Code::Blocks creates automatically is to copy libHelloWorld.so file to HelloWorld.so and to zip HelloWorld.so in plugin.
If I don't do this the plugin manager complais for: File 'HelloWorld.so' not found in plugin '/home/Development/CodeBlocks/HelloWorldPlugin/HelloWorld.cbplugin'

I'm currently trying to track the code execution in Code::Blocks methods related to installing new plugins.

Suggestions of any kind are always welcome!

Orione:
As an update to problem description, and hopefully a hint to get hint:

file src/include/cbplugin.h
in PluginRegistrant::PluginRegistrant
I get correct value for parameter "name" -> HelloWorld

This method contains only following call:
Manager::Get()->GetPluginManager()->RegisterPlugin(name, // plugin's name
                                                                &CreatePlugin, // creation
                                                                &FreePlugin, // destruction
                                                                &SDKVersion); // SDK version

both "Manager::Get()" and "Manager::Get()->GetPluginManager()" return valid instances

method declaration in src/include/pluginmanager.h is
        void RegisterPlugin(const wxString& name,
                            CreatePluginProc createProc,
                            FreePluginProc freeProc,
                            PluginSDKVersionProc versionProc);


but in the file sdk/pluginmanager.cpp
method PluginManager::RegisterPlugin
the first parameter contains odd values: lenght is correct, memory address is still the same as in PluginRegistrant::PluginRegistrant, characters in wxString are no more correct

Hope this information could be helpful to someone to help me.
I have no idea on how to proceed deeper in code inspection... maybe gdb on memory address but I don't know how to get who is modifying the value.
Thanks!

oBFusCATed:
Orione:
How many versions of C::B do you have installed?

To compile a plugin on linux you don't have to build from source, because we provide usable sdk.
You can use pkg-config to get the proper compiler/linker settings.

What is the output of ldd libyourplugin.so?

If you have mixed libraries there is no point in debugging it with gdb.

Navigation

[0] Message Index

[#] Next page

Go to full version